2013-09-03 2 views
0

У меня есть привязка к Lable Text. Я создаю якорь с runat = "server" динамически нажатием кнопки, он создается, как и ожидалось. Я хочу использовать событие click, но оно не срабатывает.Нажмите Событие динамически генерируемого якоря Не стреляйте

Мой код:

lblEmail.Text = email + " <a href='#' runat='server' class='crossicon' onclick='removebtn_Click'></a> "; 

protected void removebtn_Click(object sender, EventArgs e) 
{ 
} 

Как я могу создать событие для этой кнопки я не хочу использовать JS, так как в этом случае я должен буду использовать скрытое поле для нового значения

ответ

0

По умолчанию элементы управления используют __doPostBack для выполнения обратной передачи на сервер. __doPostBack принимает UniqueID элемента управления (или в HTML, свойство name элемента HTML). Второй параметр - это имя команды для запуска.

<a href='#' runat='server' class='crossicon' href="javascript:void(0);" onclick="__doPostBack('someuniqueid', '');></a> 

System.Web.UI.Page уже реализует интерфейс IPostBackEventHandler по умолчанию, так что вам не нужно реализовывать его на каждой странице - это уже есть.

Вы можете переопределить метод RaisePostBackEvent на странице, как это:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument) 
{ 
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument); 

    if (source == SomeControl) 
    { 
     //do something 
    } 
} 

Я надеюсь, что это поможет.

+0

Должен ли я предоставить код для onclick? –

+0

вам нужно написать свой код RaisePostBackEvent вместо removebtn_Click. –

1

Добавление разметки/текста на ярлык таким образом не будет добавлять ссылку или регистрировать событие в дереве управления на сервере. Для этого поведения динамического добавления элементов управления, а также события сервера, которые будут достигнуты, необходимо зарегистрировать элементы управления и события (как показано ниже)

Aspx:

<asp:Panel runat="server" id="pnlEmail"> 
    <asp:Label runat="server" id="lblEmail"/> 
</asp:Panel> 

aspx.cs: в зависимости от того, событие, вы хотите, чтобы задать текст метки (наряду со ссылкой)

lblEmail.Text = email; 
LinkButton lnkbtnEmail = new LinkButton(); 
lnkbtn.Click += lnkbtn_Click; 
lnkbtn.Text = "Dynamic Link"; 
pnlEmail.Controls.Add(lnkbtnEmail); 

И Обработчик будет

void lnkbtn_Click(object sender, EventArgs e) 
{ 
     // code for your dynamically generated link 
} 
0

Я не думаю, что он создан динамически. Где идентификатор этого элемента управления. Вы должны создать контроль над сервером и добавить его в какой-либо placeholder/panel. E.t.c

Смежные вопросы