今天在项目中再次碰到了问题,就是Combobox中的值如果是直接绑定很简单。简单添加项就行了。代码如下:

<ext:ComboBox ID="ComBox_Sex" runat="server" FieldLabel="性别" Width="" EmptyText="请选择性别..." >  
<Items>
<ext:ListItem Text="男性" Value=""/>
<ext:ListItem Text="女性" Value="" />
</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="" 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[];
//获取表中性别下拉数据参数都是两个: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);
            }
        }  

Ext.net中Combobox如何绑定数据库中的值-通用方法的更多相关文章

  1. Ext.net中Combobox如何绑定数据库中的值

    ];      ];      " />       </Items> </ext:ComboBox>

  2. Sliverlight linq中的数组筛选数据库中的数据

    首先 什么是linq呢 ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特 ...

  3. MyBatis中使用实体中使用枚举,数据库中使用数值

    一.简介 本文主要讲MyBatis中使用实体中使用枚举,数据库中使用数值的解决方案.正常直接使用会报错,需要添加typeHandlers在mybatis-config.xml中. 二.解决方案 如下: ...

  4. Python:判断文本中的用户名在数据库中是否存在,存在返回1,不存在返回0

    下面是我写的python的一个小脚本,作用是:判断文本中的用户名在数据库中是否存在,存在返回1,不存在返回0.用的是MySQL数据库. 要注意的是:strip函数的使用,该函数的作用是去除字符串两端多 ...

  5. 解决SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题

    一.在application.yml配置中添加数据库根据实体类自动创建数据库表的配置(这里数据库采用MySQL数据库) jpa: database: MYSQL show-sql: true #Hib ...

  6. 检验Excel中数据是否与数据库中数据重复

    #region 记录Excel中的重复列 /// <summary> /// 记录Excel中的重复列 /// </summary> /// <param name=&q ...

  7. jQuery中设置form表单中action的值的方法

    下面介绍在jQuery中设置form表单中action的值的方法. $("#myFormId").attr("action", "userinfo.s ...

  8. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  9. c# 在datagridview中添加comboboxcolumn 绑定数据库读取显示数据

    datagridview中的comboboxcolumn 从绑定的数据库中读取显示时,只需要注意一点,就是sql语句加个 CStr() 字符串转换函数即可,如下: SELECT CStr(XXX) a ...

随机推荐

  1. 县级以上联动js实现无需数据库的行政区域下拉控件

    代码共享url: http://code.google.com/p/region-select-js/ 数据已经更新到中国统计局网站中的2012年的那批数据(制作后未核对); 下拉使用div模拟实现. ...

  2. php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别

    getcwd() :显示是 在哪个文件里调用此文件 的目录 __DIR__ :当前内容写在哪个文件就显示这个文件目录 __FILE__ : 当前内容写在哪个文件就显示这个文件目录+文件名

  3. 取消Eclipse SVN的自动链接方式

    1. 选中指定的项目名(有文件夹样子的那个) 2. 右键,在在弹出菜单选择 Team 3. 然后再点击, Disconnect 即可.

  4. 在Fedora8上安装MySQL5.0.45的过程

    本来想安装最新的5.6.13-1版本,下载下来后,依赖的包rpmlib无处下载,无法只得作罢.从Foreda8的安装光盘中找到了以下文件: mysql-5.0.45-4.fc8.i386.rpm my ...

  5. Matlab实现:图像边缘提取

    1. 边缘提取算法 方法一:一阶微分算子 Sobel算子 Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,Sobel算子对边缘定位不是很准确,图像的边缘不止一个像素. Roberts算子 ...

  6. iOS new 和 alloc的区别

    一般如果只是 alloc init 那么 用new 是一样的 SomeObject*myObject =[[SomeObject alloc] init]; SomeObject*myObject = ...

  7. 商业价值:苹果iTV,再一次改变世界?

    苹果(Apple)公司打算进军智能电视领域,这在行业里已经不是秘密,有关苹果智能电视的消息也是不绝于耳,结合苹果产品线的命名规则,苹果智能 电视基本上就是iTV.就目前而言,Android智能系统已经 ...

  8. whereis 命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/11/09/2761928.html whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b) ...

  9. MySQL 忘记密码:skip-grant-tables

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...

  10. taro 在components文件夹中 新建组件时,组件支持自定义命名,但是不能大写开头

    在components文件夹中 新建组件时,组件支持自定义命名,但是不能大写开头.否则会报错 错误写法: // 真实路径 import MinaMask from '../../components/ ...