Обработчик событий Dropdownlist внутри Gridview - PullRequest
0 голосов
/ 06 января 2010

Я добавил Dropdownlist в Gridview при событии RowDataBound.Код:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    DropDownList ddlSeason = new DropDownList();

    ddlSeason.DataSourceID = "odsRoomSeason";
    ddlSeason.DataTextField = "SeasonTittle";
    ddlSeason.DataValueField = "SeasonID";
    ddlSeason.AutoPostBack = true;
    ddlSeason.SelectedIndexChanged += new EventHandler(ddlSeason_SelectedIndexChanged);

    TableCell tcSeason= new TableCell();

    tcSeason.Controls.Add(ddlSeason);
    e.Row.Cells.AddAt(e.Row.Cells.Count, tcSeason);
}

Обработчик события, который я добавил:

protected void ddlSeason_SelectedIndexChanged(object sender, EventArgs e)
{
    //
}

Но проблема в том, что функция обработчика события не перехватывает событие.Подскажите, пожалуйста, как написать правильный обработчик событий, также мне нужно получить строку, из которой сработало событие Dropdownlist.

1 Ответ

1 голос
/ 10 мая 2010

Вам удалось решить это за это время?

Убедитесь, что DataBind () сетка до событий будет запущена , потому что ASP.NET может отправлять событие только в том случае, если динамически созданные элементы управления находятся в этот момент. Жизненный цикл страницы после обратной записи выглядит примерно так:

  1. инициализация
  2. Page_Load ()
  3. обработка событий
  4. PreRender ()
  5. Render ()

Поэтому у меня были похожие проблемы, когда я генерировал динамические элементы управления только в PreRender или более поздней версии, потому что события обрабатываются до этих шагов. Может потребоваться, чтобы DataBind () сетки даже дважды в течение жизненного цикла страницы: один раз в Page_Load (), затем после обработки событий и обновления модели, другой DataBind () в PreRender (), отражать новое состояние модели.

...