【问题标题】:ASP.net DataView - Cant apply filterASP.net DataView - 无法应用过滤器
【发布时间】:2012-03-20 18:57:58
【问题描述】:

我正在用 C# 在 asp.net 中构建一个网站。

我正在尝试使用数据视图,以便过滤数据集,然后将其返回到 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"];
 }
}

有人知道我做错了什么吗?

【问题讨论】:

    标签: asp.net visual-studio webforms


    【解决方案1】:

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

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

    【讨论】:

    • “我看不到你在哪里调用你的方法来过滤”是什么意思?我正在尝试过滤数据集“ds”。感谢您的回复!
    • 我没有看到对方法 FilterByFk 的调用,但这可能是您故意遗漏的内容,但无论值的数据类型如何,都绝对需要引号 ''。
    • 啊,是的,我在我的 aspx 页面中使用 objectdatasource 调用该方法。然后我把它链接到一个gridview。
    • 您应该返回数据视图而不是 FilterByFk 中的数据表。
    • 我试过了,但它总是返回空,即使删除过滤器也是如此。我应该在 dv 之后放一些东西来返回数据吗?目前我有 public DataView FilterByFk(Int32 FK) ... return dv;
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 2012-02-26
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多