在页面加载时绑定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还有初始化,
故。。。。。。