动态生成控件不响应事件的问题(100分) 使用click吧lb.click += new System.EventHandler(OnLinkClick); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LinkButton lb;for(int i=0;i<10;i++){ lb=new LinkButton(); lb.CommandArgument=i.ToString(); lb.Text=" "+i.ToString()+" "; lb.Click+=new System.EventHandler(lb_Click); Table1.Rows[0].Cells[0].Controls.Add(lb);} private void lb_Click(object sender,System.EventArgs e){ Response.Write(((LinkButton)sender).CommandArgument); } 奇怪了,我copy你的做了一个,没有任何问题呀, 那就是这段代码没有问题,单独放在页面上试过了, 你的Table是不是放在什么别的容器中呀?有可能会被影响的。 检查循环后LinkButton的id是否变了。 所以我在最上面的贴子中写了:<table ....><tr><td>....<asp:Table CellPadding="0" CellSpacing="0" BorderColor="#DDDDDD" BorderStyle="Solid" BorderWidth="0" Runat="server" ID="table"> <asp:TableRow Runat="server"> ... <asp:TableCell id="Link" Runat="server" /> ... </asp:TableRow> </asp:Table>....</table> 我没有指定ID,好象可以不用ID的吧 如果给每个linkbutton都指定ID的话,那么客户端返回的源文件代码是:<table id="table" cellspacing="0" cellpadding="0" bordercolor="#DDDDDD" border="0" style="border-color:#DDDDDD;border-width:0px;border-style:Solid;border-collapse:collapse;"> <tr> <td nowrap="nowrap"><td id="Link"><span style="color:Red;font-size:9pt;font-weight:bold;">[1]</span> <a id="2" href="javascript:__doPostBack('2','')" style="color:Black;font-size:9pt;">2</a> <a id="3" href="javascript:__doPostBack('3','')" style="color:Black;font-size:9pt;">3</a> <a id="4" href="javascript:__doPostBack('4','')" style="color:Black;font-size:9pt;">4</a> <a id="5" href="javascript:__doPostBack('5','')" style="color:Black;font-size:9pt;">5</a> <a id="6" href="javascript:__doPostBack('6','')" style="color:Black;font-size:9pt;">6</a> </tr></table>也就是说ID没有变 放在html容器中一般是没有影响的。最后办法 重起你的编译环境, 动态生成代码是在Page_Load中吗?给你的建议是在前一次动态生成时用一个static TableCell变量保存上一次动态生成的结果,然后在下一次Page_Load中对其Click事件再一次绑定 我之知道在vb.net中,在你动态生成控件中,使用visual basic addhandler 语句,这个语句将一个子例程与一个事件关联起来。 AddHandler btn.click, Addressof yourselrsub其中,AddHandler ,Addressof 是关键字。然后,你可以自己编写你的yourselrsub过程。 你的Page_Load有没有加上IsPostBack,如果加上是不行的,每次回来控件都需要重新创建 你的控件要重新创建,否则即使通过__doPostBack回来,也会找不到该控件的实例,更不用说触发它的事件了 动态创建GridView问题 table高度问题 求一个 asp.net ajax 密码强度验证效果 System.Web.HttpRequest 并不包含 dataset 的定义 这样的存储过程可以吗? HttpWebRequest Timeout急求解 DataGrid 如何指定编辑用户鼠标指定的单元格 sos 救火啦 100阿. 在asp.net中用VB如何获取datagrid中的列名(字段值)??? 都来看看,一个简单的问题 怎么知道对方聊QQ时的IP地址? 我做个论坛,想进行给分,csdn怎么给分的是每一次都做个循环吗,能不能校验控件完成 web应用程序中的服务器错误,请教
for(int i=0;i<10;i++){
lb=new LinkButton();
lb.CommandArgument=i.ToString();
lb.Text=" "+i.ToString()+" ";
lb.Click+=new System.EventHandler(lb_Click);
Table1.Rows[0].Cells[0].Controls.Add(lb);
} private void lb_Click(object sender,System.EventArgs e){
Response.Write(((LinkButton)sender).CommandArgument);
}
你的Table是不是放在什么别的容器中呀?有可能会被影响的。
<tr><td>
....<asp:Table CellPadding="0" CellSpacing="0" BorderColor="#DDDDDD" BorderStyle="Solid" BorderWidth="0" Runat="server" ID="table">
<asp:TableRow Runat="server">
...
<asp:TableCell id="Link" Runat="server" />
...
</asp:TableRow>
</asp:Table>....
</table>
<table id="table" cellspacing="0" cellpadding="0" bordercolor="#DDDDDD" border="0" style="border-color:#DDDDDD;border-width:0px;border-style:Solid;border-collapse:collapse;">
<tr>
<td nowrap="nowrap"><td id="Link"><span style="color:Red;font-size:9pt;font-weight:bold;">[1]</span> <a id="2" href="javascript:__doPostBack('2','')" style="color:Black;font-size:9pt;">2</a> <a id="3" href="javascript:__doPostBack('3','')" style="color:Black;font-size:9pt;">3</a> <a id="4" href="javascript:__doPostBack('4','')" style="color:Black;font-size:9pt;">4</a> <a id="5" href="javascript:__doPostBack('5','')" style="color:Black;font-size:9pt;">5</a> <a id="6" href="javascript:__doPostBack('6','')" style="color:Black;font-size:9pt;">6</a>
</tr>
</table>也就是说ID没有变
给你的建议是在前一次动态生成时用一个static TableCell变量保存上一次动态生成的结果,然后在下一次Page_Load中对其Click事件再一次绑定
AddHandler btn.click, Addressof yourselrsub
其中,AddHandler ,Addressof 是关键字。然后,你可以自己编写你的yourselrsub过程。