onClick для динамически генерируемой LinkButton - PullRequest
0 голосов
/ 20 октября 2011

В моем приложении веб-части sharepoint.Я динамически генерирую 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);
}

Однако, когда я нажимаю на одну из ссылок в пользовательском интерфейсе, мой отладчик никогда не достигает точки останова, которая установлена ​​в самой первой строке

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);
        }
 }

Где StateClicked вызывается нажатием на карту изображения США.

Ответы [ 2 ]

1 голос
/ 03 июля 2013

У меня была такая же проблема здесь ...

я создавал HtmlTable после запуска события ... эта таблица имеет (n) HtmlTableRow с (рассчитывается в обработчике событий)
теперь каждая строка содержит 2 LinkButton s, которые генерируются из кода позади .. после обработки события ... и каждому LinkButton назначается новый обработчик событий:

lnkbtnEdit.CommandArgument = b.BookID.ToString();<br /> lnkbtnEdit.Click += new EventHandler(lnkbtnEdit_Click);
где lnkbtnEdit_Click подпись выглядит следующим образом:
protected void lnkbtnEdit_Click(object sender, EventArgs e)

Странно то, что .. когда я нажимаю на сгенерированную LinkButton ... возникает обратная передача, но событие не запускается ...

Я не знаю точно, в чем проблема ... но я нашел решение: ..
похоже, что эти сгенерированные элементы управления исчезают при обратной передаче (попытался назначить идентификатор и использовал Page.FindControl() witch, возвращенную с нулем !!)
поэтому мне пришлось заново связать кнопки .... на Page_Load я заново сгенерировал кнопки LinkButton с тем же идентификатором ... и связал их с соответствующими EventHandler s

1 голос
/ 20 октября 2011

Вы, вероятно, не воссоздаете динамически сгенерированные ссылки при каждой обратной передаче.

Если у вас есть if (!IsPostback), обернутый вокруг вашего foreach, попробуйте удалить его.

...