2012-03-20 64 views
0

我正在用C#在asp.net中构建一个网站。ASP.net DataView - 不能应用过滤器

我想要把一个数据视图,所以我可以过滤一个数据集,然后我回到一个gridView。

问题是,它忽略了过滤器并只显示整个数据集。

这里是我的代码(左某些部分证明是减少混乱)

public class CData 
{ 
private SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString); 
private DataSet ds= new DataSet(); 
private SqlDataAdapter da; 
private DataView dv; 
private SqlCommandBuilder cb; 

public CData() 
{ 
string sql = String.Format("SELECT * FROM table"); 
da = new SqlDataAdapter(sql, cn); 
da.Fill(ds, "Table"); 
dv= new DataView(ds.Tables["Table"]); 
cb = new SqlCommandBuilder(da); 
} 

public DataTable FilterByFk(Int32 FK) 
{ 
    dv.RowFilter = "FK = "+ FK; 
    dv.RowStateFilter = DataViewRowState.ModifiedCurrent; 
    da.Update(ds, "Table"); 
    return ds.Tables["Table"]; 
} 
} 

谁知道我做错了吗?

回答

1

我看不到你在哪里调用你的方法来过滤。另外,要正确应用RowFilter,您需要指定一个列的名称,后跟一个运算符和一个要过滤的值。用单引号括起来的值。请尝试以下操作:

dv.RowFilter = String.Format("FK = '{0}'", FK); 
+0

你是什么意思?'我看不到你在哪里调用你的方法来过滤。'?我正在尝试过滤数据集'ds'。谢谢回复! – Arcade 2012-03-20 20:44:23

+1

我没有看到对FilterByFk方法的调用,但这可能是您故意忽略的内容,但无论值的数据类型如何,引号都是必需的。 – Justin 2012-03-20 20:45:38

+0

啊是的,我在我的aspx页面中使用objectdatasource调用该方法。然后我将它链接到一个gridview。 – Arcade 2012-03-20 20:48:52