gridview动态添加dropdownlist事件 画面上的dropdownlist是通过模板动态添加上的。但是事件怎么都添加不上。麻烦各位高手指点一下,本论坛下有很多这样的例子,但是怎么试都不行。请详细说明一下, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你添加上的dropdownlist 没添加事件..用模版列把.另外dropdownlist的ID 起个行号名字别重复了. 在Default.aspx.cs中的代码是:protected void Page_Init(object sender, EventArgs e) { //DropDownList dropDownList = (DropDownList)e.Row.FindControl("drr"); //dropDownList.AutoPostBack = true; SelectedindexChanged = new EventHandler(DropDownList_SelectedIndexChanged); string sqlstr = "select id,skills from t_skills "; sqlcon = new SqlConnection(strCon); sqlcon.Open(); SqlCommand cmd = new SqlCommand(sqlstr, sqlcon); SqlDataReader p_dr = cmd.ExecuteReader(); int index = 0; while (p_dr.Read()) { index += 1; TemplateField customField = new TemplateField(); customField.ShowHeader = true; customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, Convert.ToString(p_dr["skills"])); customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "", SelectedindexChanged, index); GridView2.Columns.Add(customField); //==========================end=============================== } }protected void Page_Load(object sender, EventArgs e) { //DropDownList ddl; if (!IsPostBack) {GridView2.DataSource = CreateDataSource(); GridView2.DataBind();}}模板中的代码: public void InstantiateIn(System.Web.UI.Control container) { switch (templateType) { case DataControlRowType.Header: //Literal lc = new Literal(); //lc.Text = columnName; //container.Controls.Add(lc); Label p_text = new Label(); p_text.Width = 100; p_text.BackColor = System.Drawing.Color.Silver; p_text.Text = columnName; container.Controls.Add(p_text); break; case DataControlRowType.DataRow: DropDownList drr = new DropDownList(); drr.AutoPostBack = true; drr.Width = 100; drr.ID = "dropDownList" + p_index; drr.AppendDataBoundItems = true; SqlDataReader p_dr = ddlbind(); while (p_dr.Read()) { //drr.Items.Add(new ListItem(Convert.ToString(drr.ID), "b")); drr.Items.Add(new ListItem(Convert.ToString(p_dr["class"]), "a")); } sqlcon.Close(); //drr.Items.Add(new ListItem("-----请选择------", "")); //drr.Items.Add(new ListItem("AA", "a")); //drr.Items.Add(new ListItem("BB", "b")); //drr.Items.Add(new ListItem("CC", "c")); //drr.SelectedIndexChanged += selectedIndexChanged;// // dropDownList.SelectedIndexChanged += selectedIndexChanged; drr.SelectedIndexChanged += new EventHandler(dropDownList_SelectedIndexChanged); container.Controls.Add(drr); break; default: break; } } 在模板中添加了dropdownlist的事件drr.SelectedIndexChanged += new EventHandler(dropDownList_SelectedIndexChanged);但是没什么反映 既然是模板列,你可以右键菜单选择编辑模板,选中控件,在事件窗口选择添加事件或者后台直接写事件执行的方法,前台代码中手写指定就可以了AutoPost属性设置为true AutoPost属性设置为true .. 直接添加事件 VS2005 调试问题 GridView中编辑行的时候,如何取编辑之前显示的内容? 急!!!!!!!!!!! 请问如何把.swf 和.fla 打开源文件 如何学习 sql 2005?? 好的资料???? VS2005 GridView显示 文件下载问题:老是出错,实在找不到解决办法!请高手帮帮忙吧!在线等,急...... 用asp.net开发wap网站遇到以下问题,望高手解答!! DataList+DataGrid联合使用 怎样在aspx中利用数据访问类中的常数设定DataField asp.net 如何获取客户端端口号 电子签名、加盖印章 设计一个树 至少支持六级深度
protected void Page_Init(object sender, EventArgs e) { //DropDownList dropDownList = (DropDownList)e.Row.FindControl("drr");
//dropDownList.AutoPostBack = true;
SelectedindexChanged = new EventHandler(DropDownList_SelectedIndexChanged);
string sqlstr = "select id,skills from t_skills ";
sqlcon = new SqlConnection(strCon);
sqlcon.Open();
SqlCommand cmd = new SqlCommand(sqlstr, sqlcon);
SqlDataReader p_dr = cmd.ExecuteReader(); int index = 0;
while (p_dr.Read())
{
index += 1;
TemplateField customField = new TemplateField();
customField.ShowHeader = true;
customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, Convert.ToString(p_dr["skills"]));
customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "", SelectedindexChanged, index);
GridView2.Columns.Add(customField);
//==========================end===============================
}
}
protected void Page_Load(object sender, EventArgs e)
{
//DropDownList ddl;
if (!IsPostBack)
{
GridView2.DataSource = CreateDataSource();
GridView2.DataBind();
}}
模板中的代码:
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
//Literal lc = new Literal();
//lc.Text = columnName;
//container.Controls.Add(lc);
Label p_text = new Label();
p_text.Width = 100;
p_text.BackColor = System.Drawing.Color.Silver;
p_text.Text = columnName;
container.Controls.Add(p_text);
break;
case DataControlRowType.DataRow:
DropDownList drr = new DropDownList(); drr.AutoPostBack = true;
drr.Width = 100;
drr.ID = "dropDownList" + p_index;
drr.AppendDataBoundItems = true; SqlDataReader p_dr = ddlbind();
while (p_dr.Read())
{
//drr.Items.Add(new ListItem(Convert.ToString(drr.ID), "b"));
drr.Items.Add(new ListItem(Convert.ToString(p_dr["class"]), "a"));
}
sqlcon.Close();
//drr.Items.Add(new ListItem("-----请选择------", ""));
//drr.Items.Add(new ListItem("AA", "a"));
//drr.Items.Add(new ListItem("BB", "b"));
//drr.Items.Add(new ListItem("CC", "c")); //drr.SelectedIndexChanged += selectedIndexChanged;//
// dropDownList.SelectedIndexChanged += selectedIndexChanged;
drr.SelectedIndexChanged += new EventHandler(dropDownList_SelectedIndexChanged);
container.Controls.Add(drr);
break;
default:
break;
}
}
但是没什么反映
或者后台直接写事件执行的方法,前台代码中手写指定就可以了
AutoPost属性设置为true