我快晕死了:怎么触发PlaceHolder中动态生成的LinkButton的事件呀??老大帮忙啊

chongachong 2005-04-13 12:16:31
....

for(int i=1;i<=11;i++){

LinkButton lnkbt=new LinkButton();

lnkbt.ID="lnkbt"+i.ToString();
lnkbt.Text=i.ToString();
lnkbt.CommandName=i.ToString();

lnkbt.Click += new System.EventHandler(this.lnkbt_Click); //为这个控件添加事件

plchd.Controls.Add(lnkbt);
plchd.Controls.Add(new LiteralControl(" "));
}

....

//事件
public void lnkbt_Click(object sender,System.EventArgs e)
{
LinkButton lnkbt=(LinkButton)sender;

if(lnkbt.CommandName=="2"){
Response.Write("<script>alert('测试通过 LinkButton 2');</script>");
}

Response.Write("<script>alert('至少触发了');</script>");
}


---------------------------------------------------------
问题,placeholder输出的LinkButton都正确。
可是用switch测试所有按钮时,却没有触发事件,只是产生了回送。
单独测试第2个LinkButton也不行,单独测试其他按钮也不行!!!

这到底是怎么回事呀????
PlaceHolder中动态加入的控件,如何触发他的事件啊??


老大帮忙啊~~~~~~ @_@ @_@
顶者有分

...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chongachong 2005-04-14
  • 打赏
  • 举报
回复
成拉!!!!兄弟们 ^^

把代码放到 OnInit 里就成拉!!

多谢多谢!!
chongachong 2005-04-14
  • 打赏
  • 举报
回复
成拉!!!!兄弟们 ^^

把代码放到 OnInit 里就成拉!!

多谢多谢!!
chongachong 2005-04-14
  • 打赏
  • 举报
回复
是page_load的问题吗?
呵呵,我的代码是放在 page_load中的

public void page_load()
{
for(int i=1;i<=11;i++){

LinkButton lnkbt=new LinkButton();

lnkbt.ID="lnkbt"+i.ToString();
lnkbt.Text=i.ToString();
lnkbt.CommandName=i.ToString();

lnkbt.Click += new System.EventHandler(this.lnkbt_Click); //为这个控件添加事件

plchd.Controls.Add(lnkbt);
plchd.Controls.Add(new LiteralControl(" "));
}

}


多谢各位指教,提点,我马上测试一下,放在 OnInit 中试一下
  • 打赏
  • 举报
回复
贴创建placeholder类型控件的代码出来。
ld_thinking 2005-04-13
  • 打赏
  • 举报
回复
每次添加事件是在page_load中?
  • 打赏
  • 举报
回复
你至少应该让 lnkbt 类型的按钮在 PageLoad 事件之前,整个控件的(树型)组织结构依然保持与上次页面输出时一致,这时 ASP.NET 才能认识到上一此输出的控件与这一次创建的控件那些是“同一个”,才能触发控件的 Click 事件。
  • 打赏
  • 举报
回复
搂主有根据什么认为那样写应该响应事件呢?

找找看,当页面第二次在服务器上重建时,在PageLoad事件之后,此时触发事件的那个lnkbt型的对象在页面对象的哪个角落里呢(哪一个局部或者全局变量)?没有对象自然就没有对象的事件被触发。
xiaoniaofei 2005-04-13
  • 打赏
  • 举报
回复
<%@ Page language="c#" Codebehind="Event.aspx.cs" AutoEventWireup="false" Inherits="study.Event" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>Event</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体"></FONT>
</form>
</body>
</HTML>


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace study
{
/// <summary>
/// Event 的摘要说明。
/// </summary>
public class Event : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
test();
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private void test()
{
LinkButton button = new LinkButton();
button.Text = "test";
button.Click += new EventHandler(button_click);
this.Controls[1].Controls.Add(button);
}

private void button_click(object sender,System.EventArgs e)
{
Response.Write("succed");
}
}
}

测试的代码,希望能帮到你!
xiaoniaofei 2005-04-13
  • 打赏
  • 举报
回复
lnkbt.Click += new System.EventHandler(this.lnkbt_Click);

这句放的位置肯定不对!!!
chongachong 2005-04-13
  • 打赏
  • 举报
回复
plchd变量就是对placeholder控件的引用。

怎么一有难度,就没人回答了呀?

大家多交流啊,提点建议也好

62,025

社区成员

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

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

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

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