每当重定向到另一个页面时,复选框值都会在gridview控件中消失

时间:2011-08-24 09:32:59

标签: c# asp.net gridview

我有页面,我的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”,无论我检查的复选框是什么消失。

4 个答案:

答案 0 :(得分:0)

您必须手动执行此操作。

Maintaining State of CheckBox while Paging in GridView

答案 1 :(得分:0)

当您从另一页导航时加载页面时,您的GridView正在重建。

在整个gridview和不同页面中维护Checkbox已经检查过的最佳方法是将这些值保存在某种数据库/存储中。这样,当您绑定GridView时,可以相应地设置Checkbox值。

另一种方法是将一些页面缓存添加到包含GridView的页面,但是当我涉及分页时,我不确定这是否是最好的解决方案。

答案 2 :(得分:0)

从我读到的内容来看,CheckBox不使用ViewState来保持其状态。它使用HTTP POST的内容来确定是否将控件设置为Checked。

因此,解决方案是将已检查的值保留在数据库/会话等中,然后在页面再次加载时重新绑定它们。

答案 3 :(得分:0)

您可以在此处查看使用Server.Transfer。我认为您仍然可以通过这种方式访问​​页面的视图状态。