Events Gridview内部Dropdownlist的事件处理程序

Events Gridview内部Dropdownlist的事件处理程序,events,gridview,drop-down-menu,handler,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"; ddlS

在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事件的行。

您是否同时设法解决了这个问题

确保在触发事件之前DataBind()将网格绑定到,因为ASP.NET只能在动态创建的控件存在时相应地调度事件。回发后的页面生命周期大致如下所示:

  • 初始化
  • 页面加载()
  • 处理事件
  • PreRender()
  • Render()
  • 因此,我在仅在PreRender或更高版本上生成动态控件时遇到了类似的问题,因为事件是在这些步骤之前处理的在页面生命周期中,可能需要对网格进行两次数据绑定():在page_Load()中进行一次,然后在处理事件和更新模型后,在PreRender()中进行另一次数据绑定(),以反映新的模型状态。

    是否为dropdownlist设置了AutoPostBack=“True”?