datagridview的二次筛选

haozi110 2011-06-14 02:32:46
我在做一个winform程序。并且把数据库绑定到gridview上面,对DataSet上面绑定了select查询。我设定了一个textbox和两个button1和button2。在text输入关键词,点击button1是在数据库中select。点击button2是在当前gridview中查找,即在结果中筛选,也就是datagridview的二次筛选。下面是我的button1的数据库筛选部分代码。


private void botton1_Click(object sender, EventArgs e)
{
if (cb_chaxun.SelectedIndex == 0)
{
this.db_zongheTableAdapter.FillBy_shuxing(this.yiqiDataSet.db_zonghe, '%' + txt_chaxun.Text + '%');
}
}


我想对gridview进行二次筛选,也就是在结果找那个筛选。我在botton2_Click事件中改怎么做呢。·····麻烦帮我写下思路和部分思路代码···非常非常感谢····
...全文
409 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi110 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 fangxinggood 的回复:]
看你第一次的DataSource是怎么绑定的。

有可能是绑定的 DataSet.Tables[0].DefaultView; (DataView而不是DataTable)

所以让你把绑定时的结果集(DataSet.Tables[0]或者DataSet.Tables["名称"])
做成类成员。
[/Quote]

恩 我第一次绑定的时候绑定的是dataview 是根据treeview动态绑定的

DataView dv1 = new DataView(yiqiDataSet.db_zonghe);
dv1.RowFilter = "GroupID=" + GroupID; //筛选分组相同的信息
this.dataGridView1.DataSource = dv1; //dataGrieView1数据源为筛选后的数据
this.dataGridView1.Refresh();
机器人 2011-06-15
  • 打赏
  • 举报
回复
看你第一次的DataSource是怎么绑定的。

有可能是绑定的 DataSet.Tables[0].DefaultView; (DataView而不是DataTable)

所以让你把绑定时的结果集(DataSet.Tables[0]或者DataSet.Tables["名称"])
做成类成员。
haozi110 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fangxinggood 的回复:]
你第一次button1的结果是啥?
[/Quote]
结果就是从数据库中查找出来的结果啊,就是我上面代码实现出来的结果,我想在此基础上 在筛选一次。我第一次筛选用的方法是,gridview绑定的数据源来源于DataSet。
我写了一段代码是这样的

var dv = new DataView();
DataTable dt2 = this.dataGridView1.DataSource as DataTable dv.Table = dt2;
dv.RowFilter = string.Format("xiangmu like '%{0}%'", txt_chaxun.Text);
this.dataGridView1.DataSource = dv;


但是 运行的时候 dt2是空的,this.dataGridView1.DataSource却有数据。为什么查询结果非空,this.dataGridView1.DataSource 非空,赋值给dt2 就是空值呢。
机器人 2011-06-15
  • 打赏
  • 举报
回复
你第一次button1的结果是啥?
haozi110 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fangxinggood 的回复:]
把查出来的DataTable做成类成员,然后用DataView过滤。


C# code
var dv = new DataView();
dv.Table = dt;
dv.RowFiter = string.Format("字段 like '%{0}%'", xt_chaxun.Text);
dataGridView1.DataSource = dv;
[/Quote]



dv.Table = dt ; 这个dt的值应给是datagridview的表内的值。我怎么把datagridview显示的内容做成一个打datatable呢。菜鸟问题啊··555
haozi110 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gj462375513 的回复:]
你把第一次在数据库中查询的结果保存在DataTable或DataSet中,第二次gridview需要查询的数据直接从datetable获取,这样二次查询的效果就可以达到了
[/Quote]

能给点代码提示么?
isjoe 2011-06-15
  • 打赏
  • 举报
回复

要使用BindingSource


DataSet ds = 你提取的数据。。。。
BindingSource bs = ds.Tables[0];

//表格对象
表格对象.DataSource = bs;

// 筛选的时候用如下语句,表格立即显示你筛选的结果
bs.Filter = 你的筛选语句。。。
// 回复默认的数据
bs.Filter = "";
机器人 2011-06-15
  • 打赏
  • 举报
回复
把查出来的DataTable做成类成员,然后用DataView过滤。

var dv = new DataView();
dv.Table = dt;
dv.RowFiter = string.Format("字段 like '%{0}%'", xt_chaxun.Text);
dataGridView1.DataSource = dv;
tigercao101 2011-06-15
  • 打赏
  • 举报
回复
你的第一次是......“SQL语句”得到一个DataSet DS=new DataSet()
第二次是foreach(神马东东 in DataTable)
garfieldzf 2011-06-15
  • 打赏
  • 举报
回复
那你想对gridview筛选, 那只能对gridview逐行逐列查找了


foreach(DataGridViewRow row in grid.Rows)
{
foreach(DataGridViewCell cell in row.Cells)
{
if(Regex.IsMatch())
}
}


参考
至尊贱客 2011-06-15
  • 打赏
  • 举报
回复
你把第一次在数据库中查询的结果保存在DataTable或DataSet中,第二次gridview需要查询的数据直接从datetable获取,这样二次查询的效果就可以达到了
div000 2011-06-15
  • 打赏
  • 举报
回复
其实一个按钮就可以重复筛选了
写个方法传构造 我是这么做的
haozi110 2011-06-15
  • 打赏
  • 举报
回复
问题还存在,不过依然感谢大家,我把我的问题重新写了一下,http://topic.csdn.net/u/20110615/16/f4d738af-4665-461d-bd8f-088e4b3734b5.html
这是链接,有兴趣大家去帮帮解决下。谢谢111

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧