Значения флажков исчезают в элементе управления gridview при каждом перенаправлении на другую страницу - PullRequest
0 голосов
/ 24 августа 2011

У меня есть страница в которой у меня есть вид сетки и индекс страницы, также меняющийся для каждой записи, у меня есть

флажок. В верхней части страницы у меня есть кнопка с изображением, когда я нажимаю эту кнопку, яЯ перенаправляю его на другую страницу на этой странице. У меня есть кнопка «Назад», которая перенаправляет на страницу с флажком и сеткой.

Что мне нужно сделать, чтобы сохранить флажок, когда я проверяю или что-то еще?

Это просмотр по сетке:

  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))));

}

, затем на «странице1» я вернулсяКнопка, которая перенаправляет на «страницу» 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 голосов
/ 24 августа 2011

Вы можете изучить использование Server.Transfer здесь.Я думаю, что вы все еще можете получить доступ к состоянию просмотра страницы таким образом.

0 голосов
/ 24 августа 2011

Ваш GridView перестраивается, когда страница загружается при переходе с другой страницы.

Лучший способ сохранить, какие флажки были проверены во всем виде сетки и на разных страницах, - сохранить эти значения в какой-либо базе данных / хранилище. Таким образом, когда вы привязываете GridView, вы можете соответствующим образом установить значения Checkbox.

Другим способом было бы добавить некоторое кэширование страниц на страницу, содержащую GridView, однако я не уверен, что это будет лучшим решением, если используется пагинация.

0 голосов
/ 24 августа 2011

Из того, что я прочитал, CheckBox не использует ViewState для сохранения своего состояния. Он использовал содержимое HTTP POST, чтобы определить, следует ли устанавливать элемент управления как Проверено.

Таким образом, решением было бы сохранить проверенные значения в базе данных / сеансе и т. Д., А затем повторно связать их при повторной загрузке страницы.

0 голосов
/ 24 августа 2011

Вам придется сделать это вручную.

Сохранение состояния CheckBox при поиске в GridView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...