字段 ID ,类型 int
字段 UserName, 类型 string
字段 Group, 类型 int. (2 代表 管理员, 1 代表 认证用户 , 0 代表 注册用户)
在一个winform上有一个 bindingNavigator, bindingNavigator1
一个 bindingSource bindingSource1.
一个textbox txtName.
一个 ComboBox cmbGroup.
cmbGroup的 dropdownstyle是dropdownlist.
Items集合里面有 注册用户, 认证用户, 管理员
数据绑定的设置如下:
//取数据表
DataTable dtUsers = GetDataTableBySQL("select * from Users");
bindingSource1.DataSource = dtUsers;
bindingNavigator1.bindingSource = bingdingSource1;
txtName.DataBindings.Add("Text", bindingSource1, "Name");
cmbGroup.DataBindings.Add("SelectedIndex", bindingSource1, "Group");
这样绑定好后, 运行界面上显示的数据都是正常的, cmbGroup能够显示正确的项目.
但有一个问题, bindingNavigator 不能导航(取消 cmbGroup的绑定,就能正常导航了).
如果删除当前记录 则能导航, 但 txtName和 cmbGroup的绑定却失效了.
不知道是什么原因,难道是不能绑定 ComboBox的 SelectedIndex ?
经过调查试验,可以使用绑定 SelectedValue 解决了这个问题.
方法如下:
[复制到剪贴板]
cmbGroup.DataBindings.Add("SelectedValue", bindingSource1, "Group");
//还需要增加下面的代码
DataTable DataTable1 = new DataTable();
DataTable1.Columns.Add("Name", typeof(string));
DataTable1.Columns.Add("Value", typeof(Int32));
DataTable1.Rows.Add(new object[] { "注册用户", 0 });
DataTable1.Rows.Add(new object[] { "认证用户", 1 });
DataTable1.Rows.Add(new object[] { "管理员", 2 });
cmbGroup.DataSource = DataTable1;
cmbGroup.DisplayMember = "Name";
cmbGroup.ValueMember = "Value";
这样就可以了.