【问题标题】:DataView RowFilter not selecting any rowsDataView RowFilter 没有选择任何行
【发布时间】:2016-06-04 04:07:20
【问题描述】:

我有一个从 DataView 作为源填充的 GridView。 当我尝试根据 DataView 的 RowFilter 过滤行时,没有任何反应。

我有一个文本框,允许用户输入要搜索的 Item_Number,并且应该从 DataView 中选择仅包含该 Item_Number 的记录。

public DataTable PrintTable
{
    set{Session["PrintTable"] = value;}
    get
    {
        if(Session["PrintTable"] == null)
            return null;
        else
            return (DataTable) Session["PrintTable"];
    }
}

public DataView PrintView
{
    get
    {
        if (PrintTable != null)
        {
            DataView  dv = new DataView(PrintTable);
            dv.AllowEdit = true;
            if(SortAscend)
                dv.Sort = SortColumn;
            else
                dv.Sort = SortColumn + " DESC";
            return dv;
        }
        return null;
    }
}

Private void BuildGrid()
{
    daUnSched.SelectCommand.Parameters["@WC_Id"].Value = WC_Id.Text;
    daUnSched.Fill(dsPrintTicket2.SFD10011);
    PrintTable = dsPrintTicket2.SFD10011;

    dgPrintTicket.DataBind();

}

private void btnGoTo_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{            
    string val = GoTo.Text.Trim();
    if (val.Length > 0)
    {
        PrintView.RowFilter = string.Format("Item_Number = '" + val + "'");
        PrintTable = PrintView.ToTable();
        dgPrintTicket.DataBind();
    }
}

当我输入 Item_Number 并按搜索时,会调用 btnGoTo_Click 方法,但它不会根据 RowFilter 选择行。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 在过滤后绑定之前,您没有将 Datatable 分配回您的 GridView; dgPrintTicket.DataSource = PrintTable; 之前 DataBind()
  • @techspider 我也试过了,但没有用。当我调试程序时,我检查了 PrintView.RowFilter 的值,它是“”空白。
  • 根据您的代码,它永远不会为空;只要你在val 中有一些价值。
  • 我在 val 中有一个值。我检查了它并在那里。
  • 那你的string.Format不可能不返回值

标签: c# asp.net visual-studio-2008


【解决方案1】:

您尚未将DataTable 分配回GridView 以显示过滤结果

private void btnGoTo_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{            
    string val = GoTo.Text.Trim();
    if (val.Length > 0)
    {
        PrintView.RowFilter = string.Format("Item_Number = '" + val + "'");
        PrintTable = PrintView.ToTable();
        dgPrintTicket.DataSource = PrintTable; //Or assign DataView
        dgPrintTicket.DataBind();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2021-10-07
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多