Ext.net中Combobox如何绑定数据库中的值-通用方法

发布时间:2016-12-7 20:35:08 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Ext.net中Combobox如何绑定数据库中的值-通用方法",主要涉及到Ext.net中Combobox如何绑定数据库中的值-通用方法方面的内容,对于Ext.net中Combobox如何绑定数据库中的值-通用方法感兴趣的同学可以参考一下。

<ext:ComboBox ID="ComBox_Sex" runat="server" FieldLabel="性别" Width="250" EmptyText="请选择性别..." >   <Items>               <ext:ListItem Text="男性" Value="1"/>               <ext:ListItem Text="女性" Value="2" />      </Items>  </ext:ComboBox>   一、但是要从数据库中获取绑定该如何操作呢? 官方例子是用的后台数组做的,下面用 datatable来实现如下: 在页面中,首先是aspx页面的代码:    <form id="form1" runat="server"> <ext:ResourceManager ID="ResourceManager1" runat="server"/> <ext:Store ID="Store_SexCom" runat="server">            <Reader>                <ext:JsonReader>                    <Fields>                        <ext:RecordField Name="SexID" Type="Int"/>                        <ext:RecordField Name="SexName" Type="String" />                    </Fields>                </ext:JsonReader>            </Reader>        </ext:Store>        <ext:ComboBox ID="cboxSex" runat="server" FieldLabel="性别" Width="250" EmptyText="请选择性别..."   StoreID="Store_SexCom" ValueField="SexID" DisplayField="SexName">    </ext:ComboBox>      </form> </body> </html> 后台.cs文件代码:        protected void Page_Load(object sender, EventArgs e)        {            if (!X.IsAjaxRequest)              {                  //首次加载时执行          DataSet ds_Com= getSex();     //返回的值是DataSet类型的数据      DataTable dt_Com = ds_Com.Tables[0];     //获取表中数据,Combobox一般的参数都是两个:Value传递的参数和Test显示的值     List<object> list = new List<object>(dt_Com.Rows.Count);     foreach (DataRow dr_Com in dt_Com.Rows)  //遍历获取两个值     {        list.Add(new                        {         SexID =Int32.Parse( dr_Com["SexID"].ToString()),  SexName = dr_Com["SexName"].ToString()                        });                }                  Store_SexCom.DataSource = list;   //绑定数据                  Store_SexCom.DataBind();            }        }   这样,简单的数据绑定就实现了,其实还是挺简单的吧。     二、上面的方法虽然看起来挺清晰的,但用起来还是有点麻烦,那么下面就来个更简单更直观的方法吧:       DataSet ds= getSex();                DataTable dt= ds.Tables[0];      //获取表中性别下拉数据参数都是两个:Value传递的参数和Test显示的值                foreach (DataRow dr in dt.Rows)  //遍历获取两个值                {                    Ext.Net.ListItem liSex= new Ext.Net.ListItem();         //每次创建一个Ext.Net.ListItem的对象                      liSex.Value = dr["SexID"].ToString();                   liSex.Text = dr["SexName"].ToString();                     ComBox_Sex.Items.Add(liSex);               }            } 分别遍历的把每行的值赋值给该对象的Text和Value属性。然后用Items.Add(liSex)的方法添加到List中即可。 主要思想也就是把每个dr转换成一个listItem放进到Combox里 三、解决combox中增加"全部"选项处理方式:  下拉框Combox绑定数据源,增加一个“全部”。再进行数据绑定、或者像二中进行listitem项增加方法同样适用。 WarningOnDirty="false" 四、其实上面的方法已经很简单明了了,但我们还要进行再简化或者做成通用。代码如下:  /// <summary>         /// 绑定下拉框列表         /// </summary>         /// <param name="userInfo">用户信息</param>         /// <param name="comboBox">下拉框</param>         /// <param name="itemCode">编码</param>         /// <param name="addAllItem">是否增加全部</param>         public static void GetItemDetails(BaseUserInfo userInfo, ComboBox comboBox, string itemCode, bool addAllItem = true)         {             DataTable dataTable = SNFService.Instance.ItemDetailsService.GetDataTableByCode(userInfo, itemCode);                  Ext.Net.ListItem listItem;             //设置“全部”选项             if (addAllItem)             {                 listItem = new Ext.Net.ListItem();                 listItem.Value = ItemListCategory.All.ToString();                 listItem.Text = AppMessage.All;                 comboBox.Items.Add(listItem);                 comboBox.Select(listItem);             }             //设置"下拉"数据项             foreach (DataRow dr in dataTable.Rows)             {                 listItem = new Ext.Net.ListItem();                 listItem.Value = dr[BaseItemDetailsEntity.FieldItemValue].ToString();                 listItem.Text = dr[BaseItemDetailsEntity.FieldItemName].ToString();                 comboBox.Items.Add(listItem);             }         } 上述为2.0版本之前的方法 2.1版本本人目前用的方法如下所示 前台代码: <ext:ComboBox runat="server" ID="ComboBox1" DisplayField="name" ValueField="id"                                     AllowBlank="false">                                     <Store>                                         <ext:Store runat="server" ID="Store1">                                             <Model>                                                 <ext:Model ID="Model1" runat="server">                                                     <Fields>                                                         <ext:ModelField Name="id" />                                                         <ext:ModelField Name="name" />                                                     </Fields>                                                 </ext:Model>                                             </Model>                                             <Reader>                                                 <ext:JsonReader IDProperty="id" />                                             </Reader>                                         </ext:Store>                                     </Store>                                 </ext:ComboBox> 后台代码: ds = SqlHelper.ExecuteDataset(con, "存储过程名子或者SQL语句", "你的条件");             Store_BanZuMingCheng.DataSource = ds.Tables[0];             Store_BanZuMingCheng.DataBind(); 这里的SqlHelper是我自己的数据库操作类,网上很多类似的,大家可以借鉴,个人觉得这种方法现在比较简单  

上一篇:八个笑话,八个人生哲理
下一篇:Poj 1151 Atlantis - 线段树

相关文章

相关评论