2010-02-25 2 views
0

У меня этот метод определен, так как я добавлю ссылку на каждую строку в длинной таблице. Однако он не вызывает eventHandler. Это вызывает asyncPostback, но никогда не вызывает eventHandler.ASP.NET LinkButton вызывает обратную передачу, но не вызывает указанный метод

public static void InsertLinkButton(string text, string id, EventHandler eventHandler, 
     UpdatePanel updateSummary, PlaceHolder placeHolder) 
{ 
    LinkButton link = new LinkButton(); 
    link.Text = text; 
    link.Click += eventHandler; 
    link.CausesValidation = false; 
    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); 
    trigger.ControlID = link.ID = "link" + id; 
    trigger.EventName = "Click"; 
    Utils.Tag(link, placeHolder); 
    updateSummary.Triggers.Add(trigger); 
} 

signiture обработчик события:

protected void link_Click(object sender, EventArgs e) 
{ 
    //check which link clicked me and do stuff 
} 

Я бы назвал метод с этим:

InsertLinkButton("Division", "Division", link_Click, updateSummary, placeHolderSummary); 

ли что-то в этом коде не так? Или мои проблемы?

+0

Проверьте код. Вы получите ошибку компиляции. Вам нужно пять аргументов и только отправка четырех. –

+0

Да, я скопировал/вставил неправильный код вызова – jamone

ответ

2

Вам необходимо убедиться, что ваша кнопка была вставлена ​​на страницу до того, как будет обработано событие клика, иначе обратная передача не будет работать.

1

Вы звоните в свою вставку достаточно рано в pagelifecycle?

Если вы слишком поздно подключаете событие с кликом, у вас никогда не будет события.

Попробуйте перевести вызов в Инициатор страницы.

0

У меня была аналогичная проблема. Предоставление LinkButtons ID решило его для меня.