.net для разработки динамически создаваемых элементов управления нужны свои методы - PullRequest
0 голосов
/ 30 января 2009

Я уверен, что почти все программирующие в .net сталкивались с подобными проблемами при динамическом создании кнопок.

Пример сценария ..

У меня есть сетка, и в одном из полей сетки у меня есть кнопка. Обычно в .net с использованием Visual Studio вы можете легко получить событие нажатия кнопки, однако, поскольку эти кнопки создаются динамически, их не так просто захватить. Мне было любопытно, каким будет лучший способ получения события нажатия кнопки.

Я понимаю, что это возможно с помощью dopostback; однако, я не уверен, как реализовать это, и я не пытался, потому что я также прочитал, что метод dopostback не очень хорош для использования. Почему это так?

Ответы [ 3 ]

4 голосов
/ 30 января 2009

В виде сетки есть событие с именем RowDatabound . Поместите обработчик события в это:

gv.RowDataBound += new EventHandler(rowBound);

Теперь внутри этой функции вы будете использовать FindControl, чтобы найти кнопку и добавить обработчик:

function rowbound(Object sender, GridViewRowEventArgs e)
{
  if(e.Row.RowType == DataControlRowType.DataRow)
  {
      var b = e.Row.FindControl("btn") as Button;
      b.Click += new EventHandler(handleBtnClick);
  }
}
2 голосов
/ 30 января 2009

Во время события ItemCreated Gridview используйте FindControl, чтобы получить ссылку на кнопку и прикрепить туда обработчик события. то есть. btn.Click + = Somehandler;

1 голос
/ 04 февраля 2009

К сожалению, ответ был намного проще, чем я когда-либо думал ..

Я не осознавал, что событие ItemCommand можно было использовать для кнопок, созданных в TemplateField.

Все, что мне действительно нужно было сделать, это ..

Private Sub GridView1_ItemCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewCommandEventArgs) Handles DetailsView1.ItemCommand
    If e.CommandName = "myButton" Then
        //'myButton press event logic here
    End If
End Sub

Спасибо за вашу помощь, ребята .. Я действительно ценю это. Я уверен, что ваши ответы будут полезны в будущем.

...