当前位置:编程学习 > C#/ASP.NET >>

Win中的Bindingsource使用问题

    窗口中有一些Textbox、Commbox、Datetimepiker控件,还有一个Datagridview控件,想实现的效果是:选中Datgridview中的不同行时,Textbox、Commbox自动更新显示该行的源数据行中某些列的值。
    我是这样实现的:
Dim TableA as New DataTable("TableA")   '该表为Datagridview的数据源
Dim DS as new DataSet                   '因为TableA还需要和其它表建立关系,所以用了Dataset
DS.Tables.add(TableA)
Dim BS as new BindingSource(DS,"TableA")

Dim Adapter as new sqldataadapter("select * from ……",sqlcnn)
Adapter.fill(TableA)

Textbox.Databinding.add("Text",BS,"ColumnAinTableA")
commbox.Databinding.add("Text",BS,"ColumnBinTableA")
datetimepiker.Databinding.add("Value",BS,"ColumnCinTableA")
Datagridview.DataSource=BS
至此,程序实现了期望效果,没什么问题,接下来问题来了
继续使用Adapter向TableA中追加填充数据
adapter.selectcommand.commandtext="select * from ……where……"
adapter.fill(TableA)
这时datagridview控件中是可以看见新填充进来的行的,但这些行中有部分行被选中是,Textbox等控件并不更新显示了,部分行还可以。

如果将TableA清空后再填充:TableA.clear() '想做个分页效果
adapter.selectcommand.commandtext="select * from ……where……"
adapter.fill(TableA)
此时连Datagridview中的显示都不正常,并没有显示出查询语句返回的结果,只显示出几条,而且选中后TextBox控件并不更新显示。

这是为什么呢,请大家指教。还是说当TableA中的数据发生改变后,一定要重新设置BS,即要 BS=new Bindingsource(DS,"TableA")一下,并重新设定所有控件的数据绑定呢? --------------------编程问答-------------------- Dim TableA as New DataTable("TableA") '该表为Datagridview的数据源
Dim DS as new DataSet '因为TableA还需要和其它表建立关系,所以用了Dataset


你的TableA是临时的还是全局的?从你的描述来说,有点怪...不清楚具体代码,不好说.. --------------------编程问答-------------------- TableA是窗体类中定义的,对这段代码来说算是全局的
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,