protected void gv_Topic_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Edit)
{
DropDownList ddl_Template = (DropDownList)(e.Row.Cells[1].FindControl("ddl_Template"));
ddl_Template.DataSource = Control.TopicList.GetTopicTemplate();//获得数据源
ddl_Template.DataTextField = "Name";
ddl_Template.DataValueField = "ID";
ddl_Template.DataBind();
ddl_Template.Items.Insert(0, new ListItem("无", "null"));
ddl_Template.SelectedIndex = 3; DropDownList ddl_Style = (DropDownList)(e.Row.Cells[2].FindControl("ddl_Style"));
ddl_Style.DataSource = Control.TopicList.GetStyle();//获得数据源
ddl_Style.DataTextField = "Name";
ddl_Style.DataValueField = "CssstyleId";
ddl_Style.DataBind();
ddl_Style.Items.Insert(0, new ListItem("无", "null"));
}
}这是为了给GridView的模板列中的DropDownList控件赋值,但是问什么我的程序只有点击GridView中的第一行的"编辑"时,e.Row.RowState的值才是edit,点击其他行是状态都是normal也就是只有点击第一行的"编辑"时才执行这段代码,点击其他行的"编辑"时就不执行,高手帮忙解释一下,在线等~~
{
if (e.Row.RowState == DataControlRowState.Edit)
{
DropDownList ddl_Template = (DropDownList)(e.Row.Cells[1].FindControl("ddl_Template"));
ddl_Template.DataSource = Control.TopicList.GetTopicTemplate();//获得数据源
ddl_Template.DataTextField = "Name";
ddl_Template.DataValueField = "ID";
ddl_Template.DataBind();
ddl_Template.Items.Insert(0, new ListItem("无", "null"));
ddl_Template.SelectedIndex = 3; DropDownList ddl_Style = (DropDownList)(e.Row.Cells[2].FindControl("ddl_Style"));
ddl_Style.DataSource = Control.TopicList.GetStyle();//获得数据源
ddl_Style.DataTextField = "Name";
ddl_Style.DataValueField = "CssstyleId";
ddl_Style.DataBind();
ddl_Style.Items.Insert(0, new ListItem("无", "null"));
}
}这是为了给GridView的模板列中的DropDownList控件赋值,但是问什么我的程序只有点击GridView中的第一行的"编辑"时,e.Row.RowState的值才是edit,点击其他行是状态都是normal也就是只有点击第一行的"编辑"时才执行这段代码,点击其他行的"编辑"时就不执行,高手帮忙解释一下,在线等~~
FindControl("ddl_Template")这句话找的始终是第一个DropDownList ,把他改为
ddl_Template.ClientID试试
应该是这里出了问题 !!
protected void gv_Topic_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Edit)
{
这里先弄个输出还是附值..看看 !有数据?
}
}
{
if (e.Row.RowState == DataControlRowState.Edit)
{
DropDownList ddl_Template = (DropDownList)(e.Row.Cells[1].FindControl("ddl_Template"));
ddl_Template.DataSource = Control.TopicList.GetTopicTemplate();//获得数据源
ddl_Template.DataTextField = "Name";
ddl_Template.DataValueField = "ID";
ddl_Template.DataBind();
ddl_Template.Items.Insert(0, new ListItem("无", "null"));
ddl_Template.SelectedIndex = 3; DropDownList ddl_Style = (DropDownList)(e.Row.Cells[2].FindControl("ddl_Style"));
ddl_Style.DataSource = Control.TopicList.GetStyle();//获得数据源
ddl_Style.DataTextField = "Name";
ddl_Style.DataValueField = "CssstyleId";
ddl_Style.DataBind();
ddl_Style.Items.Insert(0, new ListItem("无", "null"));
}
} 把ddl_Template表与原对象重名试试
{
DropDownList ddl_Template = (DropDownList)(e.Row.Cells[1].FindControl("ddl_Template"));
ddl_Template.DataSource = Control.TopicList.GetTopicTemplate();
ddl_Template.DataTextField = "Name";
ddl_Template.DataValueField = "ID";
ddl_Template.DataBind();
ddl_Template.Items.Insert(0, new ListItem("无", "null"));
ddl_Template.SelectedIndex = 3; DropDownList ddl_Style = (DropDownList)(e.Row.Cells[2].FindControl("ddl_Style"));
ddl_Style.DataSource = Control.TopicList.GetStyle();
ddl_Style.DataTextField = "Name";
ddl_Style.DataValueField = "CssstyleId";
ddl_Style.DataBind();
ddl_Style.Items.Insert(0, new ListItem("无", "null"));
}
这样就OK了,:D