我有一个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);
...
}
答案 0 :(得分:0)
GridView具有内置排序功能。根据用于填充数据的数据集,您可能不需要手动手动处理任何内容,更不用说ViewState了。
查看此MSDN页面上的第二个示例,并注意它从未对ViewState手动执行任何操作... OnSorting
和OnSorted
事件只是为了显示额外信息或强加要求:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sorting.aspx
如果您发布了更多代码(包括.aspx页面,模式弹出窗口的标记以及loadModals()
函数的代码,我们可以更好地为您提供帮助。