日期:2014-05-18  浏览次数:20482 次

在GridView的表头中添加下拉框控件,响应事件怎么写
在页面加载时绑定GridView的前几列,在GridView的RowCreated事件中加入下拉框控件,GridView的后几列要根据下拉框的改变值以及GridView的前几列值到库中查询,可是我一点击下拉框的SelectedIndexChanged就出错。
if   (!IsPostBack)
                {
BindGrid();
}
void   BindGrid()
{
DataTable   dt=new   DataTable();
...
GridView1.DataSource   =   dt;
GridView1.DataBind();
}
protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)
{
  DataControlRowType   elemType   =   e.Row.RowType;
                if   (elemType   ==   DataControlRowType.Header)
                {
DropDownList   ddl   =   new   DropDownList();
...
                        ddl.DataSource   =   dv;
                        ddl.DataTextField   =   "jh ";
                        ddl.DataBind();
                        ddl.AutoPostBack   =   true;
                        ddl.SelectedIndexChanged   +=   new   EventHandler(ddl_SelectedIndexChanged);
...
e.Row.Cells[4].Controls.Add(ddl);
}
}
}
private   void   ddl_SelectedIndexChanged(object   sender,   EventArgs   e)
{
GridView1.Rows[0].Cells[5].Text   =   "hjk ";
}

------解决方案--------------------
要放到模板列中,

或者

如果是动态添加的,要在 Page 的 Load 事件之前,最好是在 Init 事件就添加,

否则视图以及相关的控件状态都还没有恢复,也就是说,页面处理类似 Onclick , OnSelectedIndexChanged 这些事件的时候,你的 GridView1_RowCreated 还没有执行,镖头的那个ddl还有初始化,

故。。。。。。