сохранить выпадающий список при поиске - PullRequest
2 голосов
/ 11 декабря 2011

У меня есть GridView, и я заполняю его списком.Один из его столбцов - DropDownList, а AllowPaging имеет значение true.Моя проблема, когда я выбираю значение на ddl и после подкачки выбранное значение теряется.Есть ли способ / идея, чтобы сохранить выбранные значения?Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 11 декабря 2011

Вы можете использовать объект Dictionary в состоянии просмотра для сохранения нескольких значений, например

Dictionary<int, string> ddlValues = new Dictionary<int, string>()

, где int - индекс строки, а string - выбранное значение ddl.Конечно, это может быть int / guid или что-то еще, в зависимости от фактического значения, хранящегося в ddl или int, если вы хотите вместо этого работать с selectedIndex.

на событии страницы, которое вам нужно будет сделать

protected void MyGridView_PageIndexChanging(Object sender, GridViewPageEventArgs e)
{
   for(int rowIndex = 0; rowIndex < myGridView.Rows.Length; rowIndex++)
   {
        DropdownList ddl = myGridView.Rows[rowIndex].FindControl("ddlId") as DropDownList

    if(ddl != null)
        {
           if(ddl.SelectedIndex > 0) //.. or sensible check appropriate to you
           {
               int ddlIndex = rowIndex * e.NewPageIndex + 1;

               //.. add pageIndex and selectedValue to dictionary
               ddlValues.Add(ddlIndex, ddl.SelectedValue);

            }

        }
    }
}

Не беспокойтесь о значениях ddl текущей страницы.Они будут сохранены с viewstate обычным способом.Это «скрытые» страницы, которые мы учитываем.Следовательно, мы повторно заполняем словарь, когда страницы сетки.

Словарь можно затем сохранить в session / viewState и использовать для повторного увлажнения выпадающего списка, выполнив процесс в обратном порядке.Например, когда страница загружается (проверка !isPostBack) или когда сетка перезагружается в зависимости от того, как именно вы ее настроили

0 голосов
/ 11 декабря 2011

Возможно, вы захотите сохранить данные в ViewState. Проверьте эту статью MSDN

http://msdn.microsoft.com/en-us/library/ms972976.aspx

После сохранения в ViewState вы можете получить данные на PostBack следующим образом:

 if (!Page.IsPostBack)
        {
           //do some stuff
        }
        else
        {
            //retrieve the viewstate information
                selectedValue= ViewState["dropdownlistValue"].ToString();

        }

Кроме того, вы также можете хранить информацию в переменной Session, но это может вызвать другие проблемы в зависимости от того, что именно вы делаете.

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