C#数据绑定

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值