【问题标题】:Gridview Filter Results Change After ModalPopUpExtender Called调用 ModalPopUpExtender 后 Gridview 过滤器结果发生变化
【发布时间】:2011-08-11 13:21:03
【问题描述】:

我有一个使用下拉框过滤的网格视图。 gridview 具有调用 ModalPopUpExtender 来显示数据的 LinkBut​​tons。一旦 gridview 被过滤并单击 LinkBut​​ton,GridView 过滤结果就会发生变化并且数据不正确。

<asp:DropDownList ID="ddl_temp" runat="server" AutoPostBack="True" 
                    onselectedindexchanged="ddl_temp_SelectedIndexChanged">
                    <asp:ListItem>Select Status</asp:ListItem>
                    <asp:ListItem>Open</asp:ListItem>
                    <asp:ListItem>Closed</asp:ListItem>
                </asp:DropDownList>
protected void tabs()
{
....
sds.FilterParameters.Clear();
        sds.SelectParameters.Clear();
        ControlParameter cp = new ControlParameter();
            cp.ControlID = ddl_temp.ID.ToString();
            cp.PropertyName = "SelectedValue";
            cp.Name = "Status";
            cp.Type = TypeCode.String;
            cp.ConvertEmptyStringToNull = false;
            sds.FilterParameters.Add(cp);           
            sds.ID = "sds1";
            sds.SelectParameters.Add("sid", sid);
            IssuesPanel.Controls.Add(sds);

        BoundField date = new BoundField();
            date.HeaderText = "Date";
            date.DataField = dt.Columns[2].ToString();
            date.SortExpression = dt.Columns[2].ToString();

        BoundColumn bc = new BoundColumn();
        bc.DataField = dt.Columns[2].ToString();

        BoundField status = new BoundField();
            status.HeaderText = "Status";
            status.DataField = dt.Columns[3].ToString();

         gv4 = new GridView();
            gv4.DataSource = sds;
            gv4.RowDataBound += gv4_RowCommand;
            gv4.Columns.Add(date);
            gv4.Columns.Add(status);
            gv4.CellPadding = 6;
            gv4.AutoGenerateColumns = false;
            //gv4.AllowSorting = true;
            gv4.AllowPaging = true;
            gv4.DataBind();             
        IssuesPanel.Controls.Add(gv4);
...
}



protected void gv4_RowCommand(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton lb = new LinkButton();
            lb.Text = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Title"));
            lb.ID = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Issue_ID"));
            lb.Click += new EventHandler(issueModal);
            e.Row.Cells[0].Controls.Add(lb);

        }

    }

protected void ddl_temp_SelectedIndexChanged(object sender, EventArgs e)
    {


            sds.FilterParameters.Clear();
            ControlParameter cp = new ControlParameter();
            cp.ControlID = ddl_temp.ID.ToString();
            cp.PropertyName = "SelectedValue";
            cp.Name = "Status";
            cp.Type = TypeCode.String;
            cp.ConvertEmptyStringToNull = false;
            sds.FilterParameters.Add(cp);
            sds.FilterExpression = "Status='{0}'";
                gv4.DataSource = sds;
                gv4.DataBind();

    }

【问题讨论】:

  • 这是 winforms 还是 asp.net webforms?你需要更具体
  • 请标记您的问题,以便更具体

标签: c# asp.net gridview modalpopupextender event-handling


【解决方案1】:

这发生在页面生命周期的哪一步?很难从那个小sn-p中分辨出发生了什么。需要更多的上下文。

你有没有试过用这个来包装你的下拉过滤:

if (!Page.IsPostBack)
{
    //dropdown filtering here
}

【讨论】:

  • 我尝试用if语句包装过滤器,而在选择下拉列表时,GridView不会过滤。问题中还添加了更多代码。谢谢。
【解决方案2】:

我解决此问题的方法是将 FilterExpression 保存在会话变量中并在 page_load 上分配它,因为每次单击 LinkBut​​ton 时它都会重新加载页面。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多