一,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();