我有一个过滤后的数据视图,我必须从中提取值。问题是,当我这样做时,我也从非过滤数据中获取值。
dv1.RowFilter = "collegeno=" +i;
for(int k=1;k<dv1.count;k++)
{
//inserting data in database; there is column in database table; I am inserting into it;
dv1.Table.Rows[k]["roomno"]);
}
对于前:总数没有。 DataView中的行是200
;
当i=1
我有30
条记录时;
如果我提供k=4
,那么我应从此30
条记录中获得第四行
但我得到200
记录的第4行..
答案 0 :(得分:3)
您编写的代码是使用代码块dv1.Table
访问主表。
而是尝试这个
dv1[k]["roomno"]
此代码适用于DataView
,适用过滤器。
如果您使用DataView.Table
,则会访问未过滤的结果。
答案 1 :(得分:2)
如果我提供k = 4,那么我应该从这30条记录中得到第四行。 但是我得到了200条记录中的第4行......
那是因为你在查询表而不是视图。相反,你应该这样做:
dv1.RowFilter = "collegeno=" +i;
object value = dv1[k]["roomno"];
根据您的需要,您可能希望使用DataTable.Select方法而不是DataView
:
var rows = table.Select("collegeno=" +i);
object value = rows[k]["roomno"];
答案 2 :(得分:0)
DataTable dt = dv.ToTable();
for(int k=1;k<dt.Rows.Count;k++)
{
dt.Rows[k]["roomno"];
//dv1.Table.Rows[k]["roomno"]);
}