onClick为动态生成的LinkButton

本文关键字:LinkButton 动态 onClick | 更新日期: 2023-09-27 18:11:40

在我的sharepoint web部件应用程序中。我像下面这样动态地生成LinkButtons。这很好

foreach (var pName in productTypesNames[productType] )
{
   var subLi = new HtmlGenericControl("li");
   var linkButton = new LinkButton{ Text = pName };
   linkButton.Click += new EventHandler(linkButton_Click);
   subLi.Controls.Add(linkButton);
   ul.Controls.Add(subLi);
}

然而,当我点击UI中的一个链接时,我的调试器从来没有碰到在

的第一行设置的断点
void linkButton_Click(object sender, EventArgs e)
{
}

更多的代码

protected void StateClicked(object sender, CommandEventArgs e)
{
  //Generate a dictionary of type Dictionary<string, List<string>>
  //Display the dictionary
  foreach (var productType in productTypesNames.Keys)
        {
            var li = new HtmlGenericControl("li");
            nav.Controls.Add(li);
            var ul = new HtmlGenericControl("ul");
            var anchor = new HtmlGenericControl("a");
            anchor.Attributes.Add("href", "#");
            foreach (var pName in productTypesNames[productType] )
            {
                var subLi = new HtmlGenericControl("li");
                var linkButton = new LinkButton{ Text = pName };
                linkButton.Click += new EventHandler(linkButton_Click);
                subLi.Controls.Add(linkButton);
                ul.Controls.Add(subLi);
            }
            anchor.InnerHtml = productType;
            li.Controls.Add(anchor);
            li.Controls.Add(ul);
        }
 }

其中stateclick是通过点击美国的图像地图调用的

onClick为动态生成的LinkButton

您可能没有在每次回发时重新创建动态生成的链接。

如果你有一个if (!IsPostback)包裹在你的额头上,试着把它去掉。

我在这里有同样的问题....

在触发事件后创建HtmlTable…这个表有(n) HtmlTableRow s(在事件处理程序中计算)
现在每行包含从后面的代码生成的2个LinkButton。事件处理后…每个LinkButton被分配一个新的事件处理程序:

lnkbtnEdit.CommandArgument = b.BookID.ToString();
lnkbtnEdit.Click += new EventHandler(lnkbtnEdit_Click);

其中lnkbtnEdit_Click签名如下:
protected void lnkbtnEdit_Click(object sender, EventArgs e)

奇怪的是……有一个回发当我点击生成的LinkButton…但是事件没有触发…

我不知道到底是什么问题…但我找到了解决办法:……
看起来好像这些生成的控件在回发时消失了(试图分配一个id并使用Page.FindControl()返回null !!)
所以我不得不重新链接按钮....在Page_Load上,我重新生成了LinkButtons,具有相同的ID…并将它们链接到各自的EventHandler s