一: ComboBox 经验总结[动态绑定数据之后,静态添加一条数据]
DropDowStyle=DropDown 允许用户键入列表项的文本框,为默认值
DropDownSysle=DropDownList 显示一个项列表,用户可从中选择一项
A: 在属性 Iitems 添加项
CobShow.SelectedIndex 选择项的索引
CobShow.SelectedItem 选择项的文本
CobShow.SelectText 空值
CobShow.SelectValue 报错...
CobShow.Items[CobShow.SelectedIndex].ToString() 选择项的文本
B:在程序中添加 CobShow.Item.Add() 结果和上面一样
C: A B 两种方式同时添加 结果和上面一样
D:动态绑定数据
CobShow.SelectedIndex 选择项的索引
CobShow.SelectedItem System.DataRow.DefaultView
CobShow.SelectText 空值
CobShow.SelectValue 选择项的 VALUE 值
CobShow.Text 选择项的 文本 值
CobShow.Items[CobShow.SelectedIndex].ToString() System.DataRow.DefaultView
E: 如果先通过属性或者程序 写入了值之后,动态绑定的时候 会清空原来的值
F: 如果动态绑定数据之后,在通过程序 CobShow.Item.Add('zhi'); 报错...[解决办法如下]
FSubject 是要显示的文本,FTech 是要传递的值
DataTable dt = cboShow.DataSource as DataTable;
DataRow dr = dt.NewRow();
dr["FSubject"] = "---Text---";
dr["FTech"]="---Value---";
dt.Rows.InsertAt(dr, 0); 插入到第一行
dt.Rows.Add(dr); 追加到最后一行
解释: dr["FSubject"],dr["FTech"] 是一行中的2列,赋值之后就完整的添加一行
CobShow.Text="---Text---",CobShow.SelectValue="---Value---"
FeedBack:
DataRow dr = dt.NewRow();
dr["A"] = "0";
dr["B"] = "请选择";
dt.Rows.InsertAt(dr, 0);
cboshow.DataSource = ds.Tables[0]; // 这个时候会触发事件
cboshow.DisplayMember = "B"; // 这个时候也会触发事件
cboshow.ValueMember = "A";
// 以上不愧是一个非常好的方法,但是当数据库中有多行的时候,也要一个一个赋值吗?
//下面继续讨论,假如cboShow 有事件 selectIndexchange 赋值的时候 会不会触发事件呢 ?
//为什么要讨论的时候,因为我们有的时候需要在加载的时候不触发事件,而是选择的时候触发事件,
//从上面可以看到DataSource,DisplayMember 的时候都会触发一次 事件,以后都不会触发
//此时SelectedValue 一直为 System.Data.DataRowView;;直接在 事件中判断 selectvalue 的值...
if (cboshow.SelectedValue.ToString() != "System.Data.DataRowView")
{
string cc = "111";
}
//[2]
//if (cboshow.Text != "System.Data.DataRowView")
//{
// MessageBox.Show("123");
//}