动态生成的DropDownList控件,为什么不响应事件?

MasterLRC 2003-09-08 10:50:14
我想实现:
点击一个按钮,则自动在 TABLE中 加入一行,生成并加入一个 DropDownList 控件

要对 DropDownList 控件的SelectedIndexChanged 事件响应。



我对思归大哥的程序作了如下添加:

int Count
{
get
{
object o = ViewState["Count"];
if(o==null)
return 0;
return (int)ViewState["Count"];
}
set
{
ViewState["Count"] = value;
}
}
DropDownList AddDDL()
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();

DropDownList ddl = new DropDownList();
<<<<<<<以下这三行是我加的
ddl.Items.Add(new ListItem("1","1"));
ddl.Items.Add(new ListItem("2","2"));
ddl.SelectedIndexChanged +=new EventHandler(ddl_SelectedIndexChanged);
tc.Controls.Add(ddl);
tr.Cells.Add(tc);
myTab.Rows.Add(tr);

return ddl;
}

protected void ddl_SelectedIndexChanged(Object o ,EventArgs e)
{
Response.Write("OK");
}

void PopulateDLL(DropDownList ddl)
{
for(int i = 0; i < Count; i++)
{
AddDDL();
}
}

protected void Add(Object sender,EventArgs e)
{
DropDownList ddl = AddDDL();
PopulateDLL(ddl);
Count++;
}


请参考

http://expert.csdn.net/Expert/topic/2229/2229874.xml?temp=.7068903
...全文
174 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
MasterLRC 2003-09-08
  • 打赏
  • 举报
回复
哇哈!成了!
MasterLRC 2003-09-08
  • 打赏
  • 举报
回复
试ing
MasterLRC 2003-09-08
  • 打赏
  • 举报
回复
那么,能让这些DropDownList响应SelectedIndexChange事件吗?
saucer 2003-09-08
  • 打赏
  • 举报
回复
<form runat=server id=form1>
<asp:Table id=tbl runat=server />
<asp:Button id=btn runat=server text=add Onclick="Add" />
<asp:Button id=btn2 runat=server text=submit/>
</form>

<script language=C# runat=server>
int Count
{
get
{
object o = ViewState["Count"];
if (o==null)
return 0;
return (int)ViewState["Count"];
}
set
{
ViewState["Count"] = value;
}
}

DropDownList AddDDL(int index)
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();

DropDownList ddl = new DropDownList();
ddl.ID = "DDL" + index.ToString();
//ddl.AutoPostBack= true;
ddl.SelectedIndexChanged += new EventHandler(DDL_Changed);
tc.Controls.Add(ddl);
tr.Cells.Add(tc);
tbl.Rows.Add(tr);

return ddl;
}

void PopulateDLL(DropDownList ddl)
{
for (int i=1; i <=10; i++)
ddl.Items.Add(i.ToString());
}


void Page_Load(Object sender, EventArgs e)
{
for (int i=0; i < Count; i++)
{
AddDDL(i);
}
}

void Add(Object sender, EventArgs e)
{
DropDownList ddl= AddDDL(Count);

PopulateDLL(ddl);
Count++;
}

void DDL_Changed(Object sender, EventArgs e)
{
DropDownList ddl= (DropDownList)sender;
Response.Write(String.Format("{0} is changed to {1}<BR>", ddl.ID, ddl.SelectedItem.Value));
}
</script>
MasterLRC 2003-09-08
  • 打赏
  • 举报
回复
动态生成控件的代码是大牛“思归”写的,我试过了,没问题!

想ID不同只要在

DropDownList ddl = new DropDownList();
后面给一个唯一的ID就行了。
saucer 2003-09-08
  • 打赏
  • 举报
回复
when you recreate the DropDownLists, you shouldn't add the Items again, if you look at my original code, you will know, the control is only populated inside Add method
chnking 2003-09-08
  • 打赏
  • 举报
回复
不行的,在按钮点击事件中给控件的事件挂钩是不起作用的,这些事要在page_load事件中或之前做的
lemong 2003-09-08
  • 打赏
  • 举报
回复
protected void Add(Object sender,EventArgs e)
{
DropDownList ddl = AddDDL();
PopulateDLL(ddl);
Count++;
}
这一段的实际作用好像添加了很多相同id的控件,而且作用范围在同一个范围之内

对不起,应该是至少两个了
lemong 2003-09-08
  • 打赏
  • 举报
回复
void PopulateDLL(DropDownList ddl)
{
for(int i = 0; i < Count; i++)
{
AddDDL();
}
}

其中的参数没有用到

protected void Add(Object sender,EventArgs e)
{
DropDownList ddl = AddDDL();
PopulateDLL(ddl);
Count++;
}
这一段的实际作用好像添加了很多相同id的控件,而且作用范围在同一个范围之内

问题不少阿
slinfo 2003-09-08
  • 打赏
  • 举报
回复
1.在InitializeComponent()里面写上
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);

2.然后在
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
}
里面写你需要实现的代码

希望对你有用
MasterLRC 2003-09-08
  • 打赏
  • 举报
回复
大家帮忙呀,小弟实在是没法了!
MasterLRC 2003-09-08
  • 打赏
  • 举报
回复
生成控件是没有总是了

可是当我改 下拉列表框时却不触发事件。

在调试时我发现执行

ddl.SelectedIndexChanged +=new EventHandler(ddl_SelectedIndexChanged);

ddl.SelectedIndexChanged 的值提示为:

ddl.SelectedIndexChanged 错误: 标识符“ddl”超出范围

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧