我有页面,我的gridview和页面索引也改变了我的每条记录
一个复选框。在页面顶部我有图像按钮,当我点击该按钮时,我将其重定向到另一个页面 在该页面中,我有一个后退按钮,可以使用复选框和gridview重定向到当前页面。
如果我检查或其他什么东西,我应该怎么做才能获得复选框?
这是gridview分页:
protected void ManageCalenderShift_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
StoreOldValue();
EmployeeDetails.PageIndex = e.NewPageIndex;
SortedBindDataToGrid();
PupulateoldCheckValue();
}
private void StoreOldValue()
{
ArrayList categoryIDList = new ArrayList();
foreach (GridViewRow row in EmployeeDetails.Rows)
{
Label can_id = (Label)row.FindControl("UserACENumber");
bool result = ((CheckBox)row.FindControl("Chkgrid")).Checked;
if (Session["CHECKED_ITEMS"] != null)
categoryIDList = (ArrayList)Session["CHECKED_ITEMS"];
if (result)
{
if (!categoryIDList.Contains(can_id.Text))
categoryIDList.Add(can_id.Text);
}
else
categoryIDList.Remove(can_id.Text);
}
if (categoryIDList != null && categoryIDList.Count > 0)
Session["CHECKED_ITEMS"] = categoryIDList;
}
private void PupulateoldCheckValue()
{
ArrayList categoryIDList = (ArrayList)Session["CHECKED_ITEMS"];
if (categoryIDList != null && categoryIDList.Count > 0)
{
foreach (GridViewRow row in EmployeeDetails.Rows)
{
Label can_id = (Label)row.FindControl("UserACENumber");
if (categoryIDList.Contains(can_id.Text))
{
CheckBox myCheckBox = (CheckBox)row.FindControl("Chkgrid");
myCheckBox.Checked = true;
}
}
}
}
这是重定向到另一个页面代码,转到第1页:
protected void imgView_Click(object sender, ImageClickEventArgs e)
{
StoreOldValue();
PupulateoldCheckValue();
Response.Redirect("page1.aspx?UserACENumber=" + (Server.UrlDecode(URLSecurity.Encrypt(UserContext.ACENumber))));
}
然后在“page1”我有后退按钮,重定向到“页面”aspx:
protected void imgimgBack_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("page.aspx?UserACENumber=" + (Server.UrlDecode(URLSecurity.Encrypt(UserContext.ACENumber))));
}
现在我的问题是:
当我检查“page.aspx”中的任何一个复选框时,我点击图片按钮并重定向到“page1.aspx”并返回当前工作“page.aspx”,无论我检查的复选框是什么消失。
答案 0 :(得分:0)
答案 1 :(得分:0)
当您从另一页导航时加载页面时,您的GridView正在重建。
在整个gridview和不同页面中维护Checkbox已经检查过的最佳方法是将这些值保存在某种数据库/存储中。这样,当您绑定GridView时,可以相应地设置Checkbox值。
另一种方法是将一些页面缓存添加到包含GridView的页面,但是当我涉及分页时,我不确定这是否是最好的解决方案。
答案 2 :(得分:0)
从我读到的内容来看,CheckBox不使用ViewState来保持其状态。它使用HTTP POST的内容来确定是否将控件设置为Checked。
因此,解决方案是将已检查的值保留在数据库/会话等中,然后在页面再次加载时重新绑定它们。
答案 3 :(得分:0)
您可以在此处查看使用Server.Transfer。我认为您仍然可以通过这种方式访问页面的视图状态。