c#中dataset 数据查询问题

我把数据库中的记录全部读到dataset 中
然后再从dataset中选择符合条件的记录显示出来.
举例( 从数据库中读出所有的省份,城市放在dataset 中 然后从下拉列表中选择山东省dataGridView中显示出所有属于山东省的城市. )

如果你的dataset中满足以下条件
1、省份和城市分别用两张表存放
2、省份表与城市表有主外键关系
我到是有个方法,如果不满足以上条件那我就不会了。

解决方案如下(在下不是什么高手,只能想到这么多了,满不满意你看看吧)

如果用省份来筛选城市的话,可以先给dataset中的两张表添加一个关系(Relation):
dataset.Relations.Add(new DataRelation("关系名",省份表中的主键列,城市表中的外键列))

添加了关系后就可以给下拉框添加SelectedIndexChanged事件处理程序了:
int index = 下拉框SelectedIndex;//下拉框选中省份的索引,如果你不能保证这个索引与表中该省份所在的行的索引相同的话,就请你自己再加点判断
DataRow[] rows = 省份表.Rows[index].GetChildRows("关系名");//根据下拉框的索引找出dataset中省份那一行,再根据那一行的主键获得城市表中的关联城市
DataTable dt = 城市表.Clone();//建一张新表,将城市表的结构克隆一份给新表
foreach (DataRow row in rows)//循环筛选出的城市
{
dt.ImportRow(row);//将数据复制给刚刚的新表
}
dataGridView.DataSource = dt;\\绑定新表
System.GC.Collect();\\强制进行垃圾回收,因为每次改变下拉框的选定项都会创建新表,所以要回收上一次创建的表。

如果你对上面的方法或属性有不了解的,请参阅《MSDN Library for Visual Studio 2008 简体中文》

参考资料:MSDN Library for Visual Studio 2008 简体中文

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-18
1、用下拉框的SelectedIndexChanged事件

2、当你选择山东的时候把山东做为关键字在数据库中查询一下

3、重新用dataGridView绑定一下就可以了
第2个回答  2009-05-16
你所说的是控件联动。
我简单的跟你说下吧:
一张省份表和一张城市表(省份列(引用省份表外键)和城市列)
1.首先在下拉别表中加载dataset中的省份
2.然后根据所选择的省份,查询其所有的城市,加载到dataset中。
应该很明白吧?
第3个回答  2009-05-21
表结构要一张城市表,一张省份表,用ID连起来。
第4个回答  2009-05-16
确实有点问题不清.本回答被提问者采纳

c#中dataset 数据查询问题
int index = 下拉框SelectedIndex;\/\/下拉框选中省份的索引,如果你不能保证这个索引与表中该省份所在的行的索引相同的话,就请你自己再加点判断 DataRow[] rows = 省份表.Rows[index].GetChildRows("关系名");\/\/根据下拉框的索引找出dataset中省份那一行,再根据那一行的主键获得城市表中的关联城市 D...

C# Winform 在DataSet中查询纪录,最后返回这个查询出来的纪录dataset...
举个例子,如果要查询ID=xxx的记录:ds.Tables[0].Select("ID ='" + yourId + "'");返回是一个DataRow[] 如果想要DataSet,那你可以自己再new 一个Dataset 把刚返回的DataRow[] Add进去

C#中 怎么模糊查询DataSet中数据
DataSet ds=db.Getds(); \/\/获得ds DataView dv = new DataView(ds.Tables[0]);dv.RowFilter = "列名 like '%"+值+"%'";DataTable dt=dv.ToTable(true,"name,age,hobby");dv.ToTable(true,"name,age,hobby");第一个参数,是否去除重复行 第二个参数,需要显示的列 这个时候dt就...

C#如何查找dataset某行数据?
因为DataSet可以看做是内存中的数据库,也因此可以说DataSet是数据表的集合,它可以包含任意多个数据表(DataTable),而且每一 DataSet中的数据表(DataTable)对应一个数据源中的数据表(Table)或是数据视图(View)。数据表实质是由行(DataRow)和 列(DataColumn)组成的集合为了保护内存中数据记录的正...

c#中关于Dataset,datarow的数据访问问题
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,...

C#如何把数据集(dateset)查询生成的表中的某个列的值取出来
C#中将数据集(dateset)查询生成的表中的某个列的值取出来(这里将查询到的SUM值取出)实现销售额统计 SqlConnection MyConnection = new SqlConnection(); MyConnection.ConnectionString = global::MySale.Properties.Settings.Default.MySaleConnectionString; MyConnection.Open(); string My...

C# winform设计时使用的“Dataset”如何返回其中包括的数据数量,是用什...
DataSet 是DataTable的集合,你所指的数量是DataTable的数量的话,那就是 var ds=new DataSet();var count=ds.Tables.Count;如果你所指的是所以得DataTable里的DataRow的数量的话,就需要循环查询了 var count=0;foreach(var dataTable in ds.Tables){ count+=dataTable.Rows.Count;} ...

c#怎么在DataSet中,查询一行中的一列数据并把整行打印出来?
string str=ds.Tables[0].Rows[i][0].ToString( );\/\/ds里的第一个表的第i行里第 0 列的单元格的值。

请教有关C#winform中DataSet的问题
DataSet是.Net DAO的数据集,说白了就是内存中一块专门用来存储你读取到的数据的空间,所以只能从数据库操作,将操作的结果填充到DataSet中去。要实现你的那个功能,需要遍历DataSet的DataTable,例如 DataSet ds = GetDataSet();\/\/这里写你自己获取数据的代码 DataTable dt = ds.Tables[0];DataTable...

C# 循环读取 DataSet 第二行数据,以此类推 111 22 33 44 我读取dataSet...
DataSet是一个盒子,里面可以放若干DataTable、DataView等,DataTable对应数据库里表,数据即放在其中。所以读取DataSet中的数据即是读取DataTable中的数据。L_Result.Text = ""; \/\/放一个Label控件显示结果 DataSet myDS = new DataSet();myDA.Fill(myDS); \/\/通过DataAdapter装入数据,DataAdapter定义略...

相似回答