一,comboBox(from:http://hi.baidu.com/anymis/blog/item/89c1dd3d25c149c79f3d62b3.html)
c# 中combobox绑定数据
为combobox绑定数据其数据源通常为DataTable这个绑定相对较易, this.comboBox1.DataSource=getTable();//数据源
this.comboBox1.DisplayMember="name";
this.comboBox1.ValueMember="id"; 而一直困绕我的是comboBox1.Add(object);此处他可以添加一个对像,而这个对象如果加进去之后没有办法像上面的datatable那样取到他的id与name今天发现原来可以这样做。数据源为从XML中得到数据。
ArrayList Source=new ArrayList();
XmlNode nodeTableList=xmlDoc.SelectSingleNode("Tables");
try
{
foreach(XmlNode xmlnod in nodeTableList)
{
MapSearchCondition msc=new MapSearchCondition();
msc.GisTableName=xmlnod.SelectSingleNode("GisTableName").InnerText;
msc.TableDescription=xmlnod.SelectSingleNode("TableDescrip").InnerText;
msc.TableName=xmlnod.SelectSingleNode("TableName").InnerText;
msc.FileDescription=xmlnod.SelectSingleNode("FileName/fileDescript").InnerText;
msc.FileName=xmlnod.SelectSingleNode("FileName/fileName").InnerText;
Source.Add(msc);
}
}
catch(Exception e)
{
}
this.cmbType.DataSource=Source;
this.cmbType.DisplayMember="TableDescription";
ComboBox 经验总结[动态绑定数据之后,静态添加一条数据] (from:)
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---"
天山寒雪 评论:
FDataTable dt = ds.Tables[0];
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");
//}
二、DataView
SqlConnection conn = theConn; conn.Open(); DataSet ds = new DataSet(); string cmdText = "select * from theTable"; SqlDataAdapter da = new SqlDataAdapter(cmdText,conn); da.Fill(ds,"mydaily"); dataGridView1.DataSource = ds.Tables["theTable"]; conn.Close();
本文介绍了在C#中使用ComboBox进行数据绑定的方法,包括如何使用DataTable和XML作为数据源,以及如何在绑定数据前后添加额外的数据项。还讨论了不同绑定方式下ComboBox属性的变化情况。

866

被折叠的 条评论
为什么被折叠?



