首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未调用链接按钮的Click函数

未调用链接按钮的Click函数
EN

Stack Overflow用户
提问于 2012-09-06 20:58:05
回答 5查看 2.8K关注 0票数 2

我正在生成动态链接按钮在c#.At中的任何一个点击,另一个函数将被调用,将显示哪个链接按钮被clicked.But它没有被调用在任何链接按钮的点击。

这就是我生成它的方式。

代码语言:javascript
运行
复制
 Int32 i; //create a integer variable
 for (i = 1; i <= 10; i++) // will generate 10 LinkButton
 {
LinkButton lb = new LinkButton(); //create instance of LinkButton
lb.Text = Convert.ToString(i) + ""; //LinkButton Text
lb.ID = Convert.ToString(i); // LinkButton ID’s
lb.CommandArgument = Convert.ToString(i); // LinkButton CommandArgument
lb.CommandName = Convert.ToString(i); // LinkButton CommanName
lb.OnClientClick+= new CommandEventHandler(lb_Command); //Create Handler for it.
//type lb.Command += and press double time Tab Key it will generat the lb_Command() code
 PlaceHolder1.Controls.Add(lb); // Adding the LinkButton in PlaceHolder
 }

这是函数代码。

代码语言:javascript
运行
复制
void  lb_Command(object sender, CommandEventArgs e)
{
Label1.Text = e.CommandName; // will display the which Linkbutton clicked
Label1.Text = "aaaa";
//  Response.Redirect(“LnkBtn.aspx?val=” + Label1.Text); // you can also use as QueryString to send values to another page
}

请提供帮助。

谢谢。

EN

Stack Overflow用户

发布于 2012-09-06 21:01:39

您使用了错误的事件:

ClientClick只是一个在javascript中触发的客户端事件。

您需要的是Click Event

..。

代码语言:javascript
运行
复制
lb.Click += new CommandEventHandler(lb_Command); //Create Handler for it.

如果你仍然没有捕捉到事件,那么很可能你在页面生命周期中的错误时间动态地声明了你的LinkButton (正如Eoin Campbell在他的评论和答案中提到的那样)。

他链接到了一个关于这个主题的非常好的article,你应该阅读它来理解为什么你没有捕捉到事件。

根据您对您的问题和不同答案的评论判断,您在Page_Load函数中声明了按钮。这是行不通的,因为Page_Load在页面生命周期中出现得太晚了。

据我所知,现在你有:

代码语言:javascript
运行
复制
void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
          Int32 i; //create a integer variable
          for (i = 1; i <= 10; i++) // will generate 10 LinkButton
          {
              LinkButton lb = new LinkButton(); //create instance of LinkButton
              lb.Text = Convert.ToString(i) + ""; //LinkButton Text
              lb.ID = Convert.ToString(i); // LinkButton ID’s
              lb.CommandArgument = Convert.ToString(i); // LinkButton CommandArgument
              lb.CommandName = Convert.ToString(i); // LinkButton CommanName
              lb.OnClientClick+= new CommandEventHandler(lb_Command); //Create Handler for it.
              PlaceHolder1.Controls.Add(lb); // Adding the LinkButton in PlaceHolder
        }
    }
}

你需要摆脱它。取而代之的是:

代码语言:javascript
运行
复制
void Page_Init(object sender, EventArgs e)
{
    Int32 i; //create a integer variable
    for (i = 1; i <= 10; i++) // will generate 10 LinkButton
    {
         LinkButton lb = new LinkButton(); //create instance of LinkButton
         lb.Text = Convert.ToString(i) + ""; //LinkButton Text
         lb.ID = Convert.ToString(i); // LinkButton ID’s
         lb.CommandArgument = Convert.ToString(i); // LinkButton CommandArgument
         lb.CommandName = Convert.ToString(i); // LinkButton CommanName
         lb.OnClientClick+= new CommandEventHandler(lb_Command); //Create Handler for it.
         PlaceHolder1.Controls.Add(lb); // Adding the LinkButton in PlaceHolder
    }
}

上面链接的文章将解释为什么会这样。这是一个很难掌握的概念,但却是一个非常重要的概念。

票数 3
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12300663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档