排序Gridview在GridView中打破了ModalPopUp

时间:2011-09-23 15:39:55

标签: c# asp.net gridview modalpopupextender

我有一个gridview,它有链接按钮,可以调用modalpopups和带有值的文本框。我正在尝试为gridview实现排序,但是我需要进行排序的if(!ispostback)语句可以防止modalpopup出现。它也不会对gridview中的文本框进行排序。有没有办法在page_load中使用ispostback实现排序?

以下是modalpopup,gridview绑定和排序的代码。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["sortOrder"] = "";
            Bind_Gridview("", "");
            loadModals();
        }
    }
protected void viewModal(object sender, EventArgs e)
{
...
     mainPanel.Controls.Add(exstModal);
        mainPanel.Controls.Add(exstModalBox);
        exstModalBox.Show();
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        Bind_Gridview(e.SortExpression, sortOrder);
    }

public string sortOrder
    {
        get
        {
            if (ViewState["sortOrder"].ToString() == "desc")
            {
                ViewState["sortOrder"] = "asc";
            }
            else
            {
                ViewState["sortOrder"] = "desc";
            }

            return ViewState["sortOrder"].ToString();
        }
        set
        {
            ViewState["sortOrder"] = value;
        }
    }

protected void gv1_RowCommand(object sender, GridViewRowEventArgs e)
    {
...
CheckBox cb = new CheckBox();
        TextBox ca = new TextBox();
        ca.Width = 20;
        TextBox cga = new TextBox();
        cga.Width = 20;

if (e.Row.RowType == DataControlRowType.DataRow) //Foreach row in gridview
        {

    while (dr1.Read())
            {
                ca.Text = dr1["cyla"].ToString();
                cga.Text = dr1["cga"].ToString();
                checkText = dr1["completed"].ToString();
                if (checkText == "True")
                {
                    cb.Checked = true;
                }
                else
                {
                    cb.Checked = false;
                }
            }
...
            dr1.Close();
            conn1.Close();
            e.Row.Cells[6].Controls.Add(ca);
            e.Row.Cells[8].Controls.Add(cga);
            e.Row.Cells[9].Controls.Add(cb);
...
}

1 个答案:

答案 0 :(得分:0)

GridView具有内置排序功能。根据用于填充数据的数据集,您可能不需要手动手动处理任何内容,更不用说ViewState了。

查看此MSDN页面上的第二个示例,并注意它从未对ViewState手动执行任何操作... OnSortingOnSorted事件只是为了显示额外信息或强加要求:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sorting.aspx

如果您发布了更多代码(包括.aspx页面,模式弹出窗口的标记以及loadModals()函数的代码,我们可以更好地为您提供帮助。