Получение выбранного значения из раскрывающегося списка внутри GridView при обновлении - PullRequest
0 голосов
/ 12 июня 2009

У меня есть GridView, в каждой строке есть кнопка Изменить. После нажатия один из столбцов превращается в раскрывающийся список, в котором пользователи могут выбрать значение. Кнопка «Правка» становится «Обновить» - очень простой обычный сценарий.

Теперь я не могу выбрать выбранный раскрывающийся список после нажатия кнопки «Обновить». Вот мой код:

    protected void gv_UpdateRow(string arg)
{
    int currentIndex = gv.EditIndex;
    gv.EditIndex = -1;

    GridViewRow currentRow = gv.Rows[currentIndex];

    try
    {
      string value2 = ((DropDownList)currentRow.FindControl("ddlValueTwo")).SelectedItem.ToString();

    }
    catch
    {
        Response.Write("error");
    }


    BindGridView(); 
}

Таким образом, выполнение программы всегда заканчивается оператором catch. Я проверил и выпадающий список найден, исключение выдается, когда выбранный элемент не найден.

Что дает?

Я использую веб-формы c # asp.net 2.0

Ответы [ 3 ]

1 голос
/ 12 июня 2009

Похоже, ошибка привязки данных, вы пытаетесь получить доступ к данным, которых еще нет ...

1 голос
/ 13 июня 2009

понял!

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

Однако, одну вещь, которую я забыл упомянуть, это то, что весь этот код находится внутри пользовательского элемента управления (файл ascx), и свойство IsPostBack применяется к странице, а не к элементу управления, что бесполезно в моем случае. Например, в моих обстоятельствах я добавляю элемент управления вручную, поэтому IsPostback ВСЕГДА будет верным, поэтому, чтобы избежать этой проблемы, мне пришлось реализовать решение на основе сеанса. Надеюсь, это кому-нибудь поможет.

Там также есть свойство usercontrol.IsPostBack, но оно работает не так, как ожидалось, возможно, они поняли это правильно для 3.0

0 голосов
/ 12 июня 2009

Первая мысль заключается в том, что вы, вероятно, должны делать SelectedItem.Value, а не SelectedItem.ToString ().

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