• SplendidCRM添加Dropdownlist并绑定来自SQL的数据


    SplendidCRM系统通常是先从SQL中取出要用的数据,存入系统的cache中以备调用,主要是为了减少反复读数据库导致的负载。

    现在,我要创建一个名为Accounts的DropdownList,并将Accounts模块的vmAccounts视图中的NAME数据绑定到这个DropdownList,步骤如下:

    1. 在\Administration\DynamicLayout\_code\NewRecord.cs的Page_Load方法中的string[] arrCachedLists = new string[]数组中添加一个新的字段值,

            private void Page_Load(object sender, System.EventArgs e)
            {
                if ( !this.IsPostBack || lstLIST_NAME.Items.Count == 0 )
                {
                    try
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using ( IDbConnection con = dbf.CreateConnection() )
                        {
                            con.Open();
                            string sSQL;
                            sSQL = "select LIST_NAME             " + ControlChars.CrLf
                                 + "  from vwTERMINOLOGY_PickList" + ControlChars.CrLf
                                 + " order by LIST_NAME          " + ControlChars.CrLf;
                            using ( IDbCommand cmd = con.CreateCommand() )
                            {
                                cmd.CommandText = sSQL;
                                using ( DbDataAdapter da = dbf.CreateDataAdapter() )
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    DataTable dt = new DataTable();
                                    da.Fill(dt);                                
                                  string[] arrCachedLists = new string[]
                                        { ""
                                        , "AssignedUser"
                                        , "Currencies"
                                        , "Release"
                                        , "Manufacturers"
                                        , "Shippers"
                                        , "ProductTypes"
                                        , "ProductCategories"
                                        , "ContractTypes"
                                        , "ForumTopics"
                                        , "Accounts" //加入模块名accounts到arrCachedLists数组
                                        };
                                    for ( int i = 0; i < arrCachedLists.Length; i++ )
                                    {
                                        DataRow row = dt.NewRow();
                                        row["LIST_NAME"] = arrCachedLists[i];
                                        dt.Rows.InsertAt(row, i);
                                    }
    //绑定dt table的数据dropdownlist类型的lstLIST_NAME 
                                    lstLIST_NAME.DataSource = dt.DefaultView; 
                                    lstLIST_NAME.DataBind();
                                }
                            }
                        }
                        lstFIELD_TYPE_Changed(null, null);
                    }
                    catch(Exception ex)
                    {
                        SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                        lblError.Text = ex.Message;
                    }
                }
            }

    2. 在_code\SplendidCache.cs中添加一个方法,用来将vmAccounts视图中的NAME数据存入CACHE, 代码如下:

            public static DataTable Accounts()
            {
                System.Web.Caching.Cache Cache = HttpRuntime.Cache;
                DataTable dt = Cache.Get("vwACCOUNTS") as DataTable;
                if (dt == null)
                {
                    try
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            con.Open();
                            string sSQL;
                            sSQL = "select ID                          " + ControlChars.CrLf
                                 + "     , NAME                        " + ControlChars.CrLf
                                 + "  from vwACCOUNTS" + ControlChars.CrLf
                                 + " order by DATE_ENTERED              " + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                using (DbDataAdapter da = dbf.CreateDataAdapter())
                                {
                                    ((IDbDataAdapter)da).SelectCommand = cmd;
                                    dt = new DataTable();
                                    da.Fill(dt);
                                    Cache.Insert("vwACCOUNTS", dt, null, DefaultCacheExpiration(), Cache.NoSlidingExpiration);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                        // 10/16/2005 Paul. Ignore list errors. 
                    }
                }
                return dt;
            }

     

    代码截图:

    image

     

    3.在 public class SplendidCache 的CustomCaches 数组中加入一行Accounts的语句:

    , new SplendidCacheReference("Accounts"          , "ID"         , "NAME"        , new SplendidCacheCallback(SplendidCache.Accounts          ))

    代码截图:

    image

    4. 在Admin页面中将Books的EditView, DetailView和ListView中的Book_Concern都从原来的Textbox改为ListBox,使用新创建的Accounts Dropdownlist作为Book_Concern的下拉列表。

    image

    5. 打开新建BOOK的页面(editview),看到Book_Concern的下拉列表的数据已经成功的绑定到了Accounts模块。

    Book_EditView:

    image

    Book_ListView:

    image

    Book_ListView:(GridView)

    image

    搞定,收工!

  • 相关阅读:
    es5预览本地文件、es6练习代码演示案例
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 836 矩形重叠(暴力)
    Subversion under Linux [Reprint]
    Subversion how[Reprint]
  • 原文地址:https://www.cnblogs.com/seapub/p/2372445.html
Copyright © 2020-2023  润新知