日期:2014-05-20  浏览次数:20762 次

关于DataSet过滤问题
我遇到一个问题,想在查出的DataSet里使用Select()进行过滤。然后把它邦到datagrid上,但是过滤出来的数组形式的。不能邦。怎么解决啊。
比如:

        DataSet   ds=new   DataSet();
      DataRow[]   dr=   ds.Tables[0].Select( "条件 ");这都好用。
但是得出来的dr是数组了,没有表结构了。不能邦到Datagrid了。请问题怎么解决。谢谢了。


------解决方案--------------------
用dataview
dataview dv= ds.Tables[0].defaultview;
dv.rowfilter( "条件 ");

datagrid.datasource=dv;

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

最新版本:20070127

http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
------解决方案--------------------
System.Data.DataTable dtData=new DataTable();
System.Data.DataView dvData=new DataView(dtData, "条件 ", "排序 ",System.Data.DataViewRowState.CurrentRows);

------解决方案--------------------
使用DataView来处理:

DataSet ds=new DataSet();

DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = "条件 ";
dataGrid.DataSource = dv;绑定到Grid
------解决方案--------------------
不知道有没有更简单的方法...

private bool ContainsRow(DataTable dataTable, DataRow dataRow)
{
bool flag = true;
foreach (DataRow row in dataTable.Rows)
{
for (int i = 0; i < dataTable.Columns.Count; i++)
{
if (!row[i].Equals(dataRow[i]))
{
flag = false;
break;
}
}
if (flag)
{
return true;
}
}
return false;
}

//调用,说明dt是原DataTable,即dataSet.Tables[0]
DataRow[] rows = dt.Select( "条件 ");
DataTable table = dt.Clone();
table.Clear();
foreach (DataRow row in dt.Rows)
{
if (!ContainsRow(table, row))
table.ImportRow(row);
}
//绑定
this.DataGrid1.DataSource=table;