动态添加的linkbutton,无法触发点击事件,在线等,解决立马结贴

zjxylc 2011-08-29 02:34:41

protected void Command(Object sender, CommandEventArgs e)
{
LinkButton lk = sender as LinkButton;
Session["CodeResult"] = "123";
Session["TimeResult"] = "asdf";
}

protected void SearchEnterpriseDetail(String stryear,String strseason,String strcode)
{
String text = stryear.ToString() + "年" + CovertToSeason(strseason).ToString() + "生产经营情况表";
System.Web.UI.WebControls.LinkButton linkbutton = new LinkButton();
linkbutton.ID = "12";
linkbutton.Text = text;
linkbutton.Command += new System.Web.UI.WebControls.CommandEventHandler(this.Command);
linkbutton.CommandName = strcode;
linkbutton.CommandArgument = CovertToTime(stryear, strseason).ToString();

// linkbutton.Click += new EventHandler(click);
linkbutton.PostBackUrl = "/mSearchInfo.aspx";
this.plLink.Controls.Add(linkbutton);
this.plLink.Controls.Add(new LiteralControl(" <br /> <br />"));
}

我要动态添加一些linkbutton,当然示例只有一个,在添加的button中注册一个单击事件,Command,但是我单击的时候根本没有进入Command函数,求高人解答。
...全文
620 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjxylc 2011-08-29
  • 打赏
  • 举报
回复
谢谢各位了,分值不多,下次争取多点,人人有份
flybisu 2011-08-29
  • 打赏
  • 举报
回复
pageload
Ispostback 检查下这个
zhangshg2008 2011-08-29
  • 打赏
  • 举报
回复
你的linkbutton是动态加的,在你执行加事件的方法时确实已经把事件加上了,但你点击linkbutton时,页面回发了,linkbutton的事件丢了,没有存下状态
一张合赵 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zjxylc 的回复:]

引用 9 楼 lmaohuanl 的回复:

不存在吧,不知道你那里写错了没
linkbutton.PostBackUrl = "/mSearchInfo.aspx";//这句代码你先注释掉看到第是那里错了

找到原因了,如果把SearchEnterpriseDetail()函数的调用放在page_load里,且不在if(!Ispostback)里,则会进入单击事件,如果放在if(!I……
[/Quote]

你把创建linkbutton放到一个私有方法里,然后调用不就好了嘛,把你的那些参数用ViewState存储,OK?
zjxylc 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 slife890809 的回复:]

是没给ID。。第一次没有ID,他会先给自己付一个ID,所以第一次没走事件,然后你点第二次的时候才会进去。。。。如果你给个ID,就不会了!!!你可以试试,这种问题我也犯过。。。。呵呵
[/Quote]
linkbutton.ID = "12"; 虽然尝试的时候ID赋值名称不好,但还是有的,呵呵
zjxylc 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lmaohuanl 的回复:]

不存在吧,不知道你那里写错了没
linkbutton.PostBackUrl = "/mSearchInfo.aspx";//这句代码你先注释掉看到第是那里错了
[/Quote]
找到原因了,如果把SearchEnterpriseDetail()函数的调用放在page_load里,且不在if(!Ispostback)里,则会进入单击事件,如果放在if(!IsPostBack)里或则通过单击一个button调用这个函数都不会进入Command事件,但是我的功能必须在单击button建之后才调用这个函数,我该如何修改才好
行游客 2011-08-29
  • 打赏
  • 举报
回复
linkbutton.PostBackUrl = "/mSearchInfo.aspx";
你把上面这段代码注销掉,就可以调试进去了,加上这句,触发command事件之前,页面已经跳转了。
一张合赵 2011-08-29
  • 打赏
  • 举报
回复
是没给ID。。第一次没有ID,他会先给自己付一个ID,所以第一次没走事件,然后你点第二次的时候才会进去。。。。如果你给个ID,就不会了!!!你可以试试,这种问题我也犯过。。。。呵呵
LMAOhuaNL 2011-08-29
  • 打赏
  • 举报
回复
不存在吧,不知道你那里写错了没
linkbutton.PostBackUrl = "/mSearchInfo.aspx";//这句代码你先注释掉看到第是那里错了
zjxylc 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lmaohuanl 的回复:]
protected void Command(Object sender, CommandEventArgs e)
{
LinkButton lk = sender as LinkButton;
Session["CodeResult"] = "123";
Session["TimeResult"]……
[/Quote]

我照这样尝试了一次,单步的时候还是无法进入注册单击事件函数Command
LMAOhuaNL 2011-08-29
  • 打赏
  • 举报
回复


protected void Command(Object sender, CommandEventArgs e)
{
LinkButton lk = sender as LinkButton;
Session["CodeResult"] = "123";
Session["TimeResult"] = "asdf";
Response.Redirect(linkbtn.IsPostUrl); //你在那边就别跳,在这个方法里面加上这句,或者看我给的那个链接里面的那个例子一样做

}

BrucesLong 2011-08-29
  • 打赏
  • 举报
回复

先确认:
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click"
oncommand="Button1_Command" />
再检查command事件是否些正确: protected void Button1_Command(object sender, CommandEventArgs e)
{

}

一点一点的排查,希望对你有所帮助.
powerchuangwai 2011-08-29
  • 打赏
  • 举报
回复
帮顶,单步跟踪一下就知道了。
LMAOhuaNL 2011-08-29
  • 打赏
  • 举报
回复
zjxylc 2011-08-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lmaohuanl 的回复:]

但是你的Command事件什么都没有做,就是给存储在session里面的信息赋值而已
[/Quote]
如果可以进得话,至少单步调式可以进,但是调式的时候根本就没有进入这个函数,直接转到目标页了。
LMAOhuaNL 2011-08-29
  • 打赏
  • 举报
回复
但是你的Command事件什么都没有做,就是给存储在session里面的信息赋值而已
zjxylc 2011-08-29
  • 打赏
  • 举报
回复
我网上找过几个看过,他们也是这么写的,就是不知道为什么我的不行,先顶个

62,243

社区成员

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

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

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

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