绑定数据源注意的地方
对于combobox的数据源绑定,试想我们从数据库中取出数据,保存在datatable中,table中可能有很多列,但是我们的combobox一般包含2个项,1个selecteditem是显示在界面中的文本,另一个selectedvalue是代表显示在界面的文本的值,这个值一般以int类型从0开始的递增出现。那我们如何将我们想要绑定的字段绑定到combox中呢。
例如我们从数据库表student中查出id,name,age,sex,birthday这几个字段。我们设置这个combobox的两个属性,
combStudent.valuemember=“id”;
combStudent.displaymember="name";
combStudent.Datasource=dt;
这样我们就实现了对combobox的绑定。
但是这个时候我们会发现一个问题,我们想要的是绑定了之后我们的combobox会显示索引为0的项。但是我们看到的是空的。
我们这个时候想到了给他加个属性selectedindex=0,当我们运行后,会报错。大概的意思好像是说不能对数据源绑定的设定..是没什么的...
这个时候我们可以给datatable加上1项.datatable中的datatrow有这样一个方法,insertat(),这个方法可以将row添加到我们想添加的位置。那我们就先创建一个row
datarow dr=new datatrow()
dr["id"]=-1 //我们说一半我们的value是从0开始自增的,我们可以将这个新增的根本对我们程序没什么影响的项的值设为-1,这样我们不必担心选择这一项程序会报错。
dr["name"]="--请选择姓名--"
dt.rows.insertat(dr,0);
这样我们就大概实现的combobox的填充。
datatgridview的填充,这个的填充比较简单,有一点我们需要注意的是我们的datatable中有些字段我们是不想显示到界面上给用户看到的。
但是我们的程序必须要用到这个字段,只不过不想显示给用户看bal
例如id,但是我们直接绑定的时候我们的id会显示到界面上 。怎么解决呢:
我们可以点击datagridview的小三角有个编辑列,我们自己手动添加列,并设置它的文本。
首先我们会这样想。我们值添加4项name,age,sex,birthday,不需要id就行了,然后分别设置datapropertyname的值分别为name,age,sex,birthday。
我们运行的时候,会发现id还是显示出来了只不过显示到了最后,这个我们再看这个编辑列的窗口,我们会发现每一项都会有一个visable的属性,这个时候我们就好解决了 。
table中有多少列,我们就编辑多少列,然后我们将设置datapropertyname为id的这个的visable的属性设置为false。
另外我们想点击dataview的一行的时候,我们下面显示很多文本框分别显示我们选中的这一行的name,age,sex,birthday。方便我们修改,这个时候就需要用到对文本的绑定了。
基本上每个控件都有这样一个属性,databingings。
txtName.dataBingings.add("text",datagridview1.datasource,"sname"),其中add方法的第一个参数是我们需要绑定的文本的哪个属性,第二个是需要绑定的数据源,第三个是需要绑定的数据源的字段的属性。
这样似乎我们不好理解。
我们可以这样,在窗体上托2个文本框,txtbox1,txtbox2.
设置txtbox1的属性:txtbox1.dataBingings.add("Text",txtbox2,"Text");
然后我们在文本2中输入看会发生什么。