C# 对Gridview排序会中断Gridview中的ModalPopUp

C# 对Gridview排序会中断Gridview中的ModalPopUp,c#,asp.net,gridview,modalpopupextender,C#,Asp.net,Gridview,Modalpopupextender,我有一个gridview,它有一个链接按钮,可以用值调用ModalPopup和文本框。我试图为gridview实现排序,但是排序所需的if(!ispostback)语句阻止出现modalpopp。它也不会对gridview中的文本框进行排序。有没有一种方法可以在页面加载时不使用ispostback来实现排序 下面是modalpopp、gridview绑定和排序的代码 protected void Page_Load(object sender, EventArgs e) {

我有一个gridview,它有一个链接按钮,可以用值调用ModalPopup和文本框。我试图为gridview实现排序,但是排序所需的if(!ispostback)语句阻止出现modalpopp。它也不会对gridview中的文本框进行排序。有没有一种方法可以在页面加载时不使用ispostback来实现排序

下面是modalpopp、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);
...
}

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

查看此MSDN页面上的第二个示例,请注意,它从不使用ViewState手动执行任何操作。。。
OnSorting
OnSorted
事件仅用于显示额外信息或强制要求:


如果您发布更多的代码(包括.aspx页面、模式弹出窗口的标记以及
loadModals()的代码)
function,我们可能能够更好地帮助您。

我正在创建BoundFields,并有一个RowDataBound事件来填充后端的gridview。我认为以编程方式创建排序功能是唯一的方法。