문제

.NET에서 프로그래밍하는 거의 모든 사람들이 버튼의 동적 생성과 비슷한 문제에 부딪쳤다 고 확신합니다.

예제 시나리오 ..

GridView가 있고 GridView 필드 중 하나에 버튼이 있습니다. 일반적으로 .NET에서 Visual Studio를 사용하여 버튼의 클릭 이벤트를 쉽게 잡을 수 있지만이 버튼은 동적으로 생성되므로 잡기가 쉽지 않습니다. 버튼의 클릭 이벤트를 잡는 가장 좋은 방법이 궁금했습니다.

나는 dopostback을 사용하여 가능하다는 것을 이해합니다. 그러나 Dopostback 방법을 읽는 것이 사용하기에 좋은 방법이 아니기 때문에 그것을 구현하는 방법을 잘 모르겠습니다. 왜 그런 겁니까?

도움이 되었습니까?

해결책 3

슬프게도, 대답은 내가 생각했던 것보다 훨씬 간단했습니다 ..

템플릿 필드에서 생성 된 버튼에 대해 ItemCommand 이벤트가 사용할 수 있다는 것을 몰랐습니다.

내가 정말로해야 할 일은 ..

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

도움을 주셔서 감사합니다. 정말 감사합니다. 당신의 대답은 앞으로 도움이 될 것입니다.

다른 팁

GridView에는 이벤트가 있습니다 databound. 이벤트 핸들러를 넣으십시오.

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

GridView의 항목이 크리팅 된 이벤트 중에 FindControl을 사용하여 버튼에 대한 참조를 가져 와서 이벤트 핸들러를 첨부하십시오. 즉. btn.click += 일부 핸들러;

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top