笔记:实现网格视图的查询功能

实现网格视图的查询功能

http://www.snetway.com/knowshow.asp?id=86

1、 与主键相关的查询

如图所示:

通过点击载入,可以将相关数据以网格试图显示出来。今天要完成的功能有下面几个方面:

在“编号”框中,输入所要查询的编号,点击根据编号搜索,即可显示满足条件的行。

 

具体步骤如下所示:

查找出相应的列并复制à构造一个相同架构的空表(这里称为:搜索结果表)à将复制的查找到的数据导入搜索结果表中à将网格视图的数据源设为搜索结果表

 

具体代码及解析如下:

在“根据编号查询”按钮的代码设置为:

DataRow searchResult=this.CourseTable.Row.Find(this.txb_CouseNo.Text.Trim());

解析:

借助本窗体的课程数据表的行集合的方法Find,根据主键值(即课程编号)快速查找相应课程,并返回其所在的数据行;但数据行不能作为数据源,需另行创建数据表,并导入该数据行,最后将数据表作为数据源

注:CourseTableS是定义的用于存放从数据库中查询到的数据的数据表,在上一次的笔记中有提到具体的定义方法。

DataTable searchResultTable=this.CourseTable.clone();

解析:

定义一个相同架构的搜索结果空表(searchResult);

searchResultTable.ImportRow(searchResult);

解析:

向搜索结果表(searchResultTable)中插入搜索到的数据行(searchResult);

 

2、 结果多行的查询:

具体步骤:

查找出符合条件的数据行à构造相同架构的空表(设为:table)à将查到的数据行导入空表(table)à设置网格视图的数据源为该表(table)。

 

具体代码如下:

DataRowView[] searchReault=this.CourseTable.Row.FindRows(this.txb_CourseName.Text.Trim());

//借助本窗体的按名称排序的课程数据视图的方法FindRows,根据排序列(即课程名称)快速查找相应课程;由于该列并非主键,可能返回多行查询结果,故返回数据行视图数组;数据行视图数组不能直接作为数据源,需转为列表后方可作为数据源;

DataTable searchResultTable=this.CourseTable.Clone();

注释:同上。

Foreach{(DataRowView dataRowView in searchResult) //遍历搜索结果所在数据行视图数组,

{

searchaResultTable.ImportRow(dataRowView.Row);

}

//通过每条数据行视图的属性Row获取相应的数据行,并导入数据表;

this.dgv_Course.DataSource = searchResultTable;

解析:

posted @ 2017-10-31 19:20  奔跑吧菜鸟  阅读(304)  评论(0编辑  收藏  举报