绑定数据源注意的地方

对于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中输入看会发生什么。

posted @ 2011-07-30 00:08  农村山沟沟出来的大学生  阅读(539)  评论(1编辑  收藏  举报