我的GridView的Session["TaskTable"]
数据源有问题。
当我第一次打开.aspx网站Session["TaskTable"]
为空时,如果我重新加载页面(F5),则Session["TaskTable"]
是我的数据表taskTable
。怎么会这样?如果我第一次重新加载页面,我只能排序。有任何想法吗?感谢
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable taskTable = new DataTable("TaskList");
taskTable = dtCloned;
Session["TaskTable"] = taskTable;
GV_Projekte.DataSource = Session["TaskTable"];
GV_Projekte.DataBind();
}
}
用于排序我的GridView
protected void gv_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dt = Session["TaskTable"] as DataTable;
if (dt != null)
{
//Sort the data.
dt.DefaultView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);
GV_Projekte.DataSource = Session["TaskTable"];
GV_Projekte.DataBind();
}
}
private string GetSortDirection(string column)
{
// By default, set the sort direction to ascending.
string sortDirection = "ASC";
// Retrieve the last column that was sorted.
string sortExpression = ViewState["SortExpression"] as string;
if (sortExpression != null)
{
// Check if the same column is being sorted.
// Otherwise, the default value can be returned.
if (sortExpression == column)
{
string lastDirection = ViewState["SortDirection"] as string;
if ((lastDirection != null) && (lastDirection == "ASC"))
{
sortDirection = "DESC";
}
}
}
// Save new values in ViewState.
ViewState["SortDirection"] = sortDirection;
ViewState["SortExpression"] = column;
return sortDirection;
}
答案 0 :(得分:0)
那是因为Page.IsPostback条件当页面没有回发时,它将会话分配给变量,现在这个值将会存在,直到任何会话超时都会到期。
采取以下练习。
protected void Page_Load(object sender, EventArgs e)
{
if (Session["a"]==null)
{
Response.Write("Session is empty");
}
else
{
Response.Write("Session is not empty");
Response.Write(Session["a"].ToString());
}
if (!Page.IsPostBack)
{
Session["a"] = "Jalpesh";
}
}
在空白页面中,我正在做同样的事情,但是第一次页面会加载,那时它会打印“会话空”'但是,在会话到期之前,该会话将不会为空,因此会打印“会话不为空”#。
因此,如果您需要会话值null,则必须在某处将会话分配给null。
答案 1 :(得分:0)
我找到了解决方案,函数gv_Sorting
必须在page_load
之前站立,以便第一次正确填充。另请参阅我从中获取代码的示例:
http://msdn.microsoft.com/de-de/library/system.web.ui.webcontrols.gridview.sorting(v=vs.110).aspx