DataGridView和SQL SERVER 已经绑定,是通过DataSources窗口将对于数据库表拖进界面上自动绑定好的。
DataGridView显示的是数据库全部数据,现在想通过一个Combo box下拉动作来筛选符合条件的数据,并刷新DataGridView。
在网上找了很久都没有找到个能用的方法,有人建议说将DataGridView中不符合条件给屏蔽掉(visible = false),我试了下,我发现在屏蔽行的时候,必须先屏蔽列才会生效,不然会报错,而且用for来查询,对于多数据效率也不行。并且新建的行也被屏蔽掉了,所以比较麻烦也不适用。
所以自己想了一个方法,来和大家分享下。
这个方法主要是利用了BindingSource.Filter 这个属性。话不多说了,上代码吧,代码很简单。
自定义函数:CustomGridRefresh
public partial class Form1:Form
.....
private void CustomGridRefresh(string str)
string strFilter = String.Format("Project = '{0}'",str); //我这里是用的数据库 Project字段来筛选的,可以根据需要自己定义。
this.bTBindingSource.Filter = strFilter;
this.bTDataGridView.Refresh();
在combo box响应函数里面就可以调用上述函数,传进 str。
DataGridView和SQL SERVER 已经绑定,是通过DataSources窗口将对于数据库表拖进界面上自动绑定好的。 DataGridView显示的是数据库全部数据,现在想通过一个Combo box下拉动作来筛选符合条件的数据,并刷新DataGridView。在网上找了很久都没有找到个能用的方法,有人建议说将DataGridView中不符合条件给屏蔽掉(visible =
增加
过滤
按钮的代码来自CodeProject网站,以下为实现步骤:
1.在工程中加入
DataGridView
Auto
Filter
ColumnHeaderCell.vb 和
DataGridView
Auto
Filter
TextBoxColumn.vb
2.
DataGridView
中的
数据
vb.net教程要采用
Binding
Source
的方式来绑定:
Dim data
Source
As New
Binding
Source
(table, Nothing) '此种方式可以在栏头
过滤
Main.DataViewL
Binding
Source
控件可以对
数据
做简单的处理,比如使用
Filter
属性实现
数据
筛选
,使用Sort属性实现简单的排序。
Filter
属性通常用在复杂的
数据
绑定方案中,当
Filter
不为空时,
Binding
Source
控件将此属性传递给基础列表日如果在对象初始化过程中设置此属性,该调用将会推迟到初始化完成后。F ilter
需要
指定列的名称,后跟一个运算符和一个要
筛选
的值,
筛选
值必须位于引号内。
Sort属性后面要跟有列的名称,用ASC或DESC标识,以指示是按升序还是降序排序,如果有多个列...
已知
数据
表 dtAll,dtAll中包含字段 【columnsA】、【columnsB】,要
筛选
出 columnsA 为“A”,columnsB 为 “B”的
数据
'1.创建容器接收
筛选
结果
dim dt as datatable
'2.把datatable 转换为dataview格式
dim dv as dataview =new dataview(dtAll)
'3.条件...
Binding
Source
是一个
数据
绑定的控件,可以用来连接
数据
源和
数据
控件。如果要修改
数据
,可以通过
Binding
Source
的 Current 属性获取当前选中的
数据
行,然后修改对应的
数据
字段,最后调用
Binding
Source
的 EndEdit 方法保存修改。例如:
// 获取当前选中的
数据
行
DataRowView row = (DataRowView)
binding
Source
1.Current;
// 修改
数据
字段
row["Name"] = "新名称";
row["Age"] = 30;
// 保存修改
binding
Source
1.EndEdit();
注意,修改
数据
时
需要
先调用
Binding
Source
的 EndEdit 方法保存之前的修改,否则可能会出现
数据
不一致的情况。另外,如果
数据
源是一个 DataTable,还
需要
调用 DataTable 的 AcceptChanges 方法才能将修改提交到
数据库
。