zoukankan      html  css  js  c++  java
  • Ext.net中Combobox如何绑定数据库中的值-通用方法

    
    今天在项目中再次碰到了问题,就是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);
                }
            }


     
  • 相关阅读:
    HR人员基本信息、分配信息和地址信息SQL
    iframe下面的session问题
    主流NOSQL数据库之MongoDB快速入门
    CookieThemeResolver
    data binding&&conversionservice
    二进制权限管理(转)
    Spring MVC 对locale和theme的支持
    OpenSessionInViewFilter类作用
    Spring数据库访问之ORM(三)
    Spring自定义属性编辑器PropertyEditorSupport + 使用CustomEditorConfigurer注册属性编辑器
  • 原文地址:https://www.cnblogs.com/spring_wang/p/3142343.html
Copyright © 2011-2022 走看看