Gridview中Dropdownlist的事件处理程序

时间:2010-01-06 04:58:11

标签: events gridview drop-down-menu handler

我在RowDataBound事件的Gridview中添加了Dropdownlist。代码是:

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 个答案:

答案 0 :(得分:1)

你有没有设法解决这个问题?

确保 DataBind()在事件将被触发之前的网格,因为ASP.NET只能动态调度事件,如果动态创建的控件是在那一刻。回发后的页面生命周期大致如下:

  1. 初始化
  2. 的Page_Load()
  3. 流程事件
  4. 的PreRender()
  5. 渲染()
  6. 因此,当我在PreRender或更高版本上生成动态控件时,我遇到了类似的问题,因为事件是在这些步骤之前处理的。 在页面生命周期中,可能需要DataBind()网格甚至两次:一旦进入Page_Load(),那么在处理完事件并更新模型后,PreRender()中的另一个DataBind()反映新的模范状态。