2012-04-20 2 views
2

문제는 설명하기가 약간 복잡하므로 부담을주십시오. 두 개의 버튼 컨트롤이 있습니다. 페이지로드시, 어떤 버튼이 페이지로드시 포스트 백을 작성했는지 알고 싶었습니다. 연구를 통해 아래에서이 스 니펫을 발견했으며 예상대로 작동합니다. 여기 버튼을 클릭 할 때 발생하는 이벤트 시나리오가 있습니다.버튼 컨트롤이 작동하지 않습니다

1. Click the button does a postback 
    2. Runs the function below and tell me the id of the button 
    3. Runs the clicked event handlers for that button 

    Protected Sub btnCalc_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalc.Click 
      ' Do this 
    End Sub 

문제는 내가 두 번째 버튼을 클릭하면,이 테스트를 통해 3.합니까 결코 1 단계와 2 단계를하지 않습니다 만 제공됩니다, 나는 그것이 첫 번째 버튼을 1, 2, 3을 클릭 않는다는 것을 가지고있다. 왜 이런 일이 일어나고 있는지 전혀 모른다.

 Function GetPostBackControlName() As String 

     Dim control As Control = Nothing 
     Dim ctrlname As String = Page.Request.Params("__EVENTTARGET") 

    If ctrlname <> Nothing AndAlso ctrlname <> [String].Empty Then 
     control = Page.FindControl(ctrlname) 
    Else 
     Dim ctrlStr As String = [String].Empty 
     Dim c As Control = Nothing 

     For Each ctl As String In Page.Request.Form 

      c = Page.FindControl(ctl) 

      If TypeOf c Is System.Web.UI.WebControls.Button Then 
       control = c 
       Exit For 
      End If 

     Next 

    End If 

    Try 
     Return control.ID.ToString 
    Catch 
     Return "" 
    End Try 

    End Function 
+4

버튼을 이벤트 핸들러에 직접 연결하고 'sender' 매개 변수를 사용하여 클릭 한 버튼을 가져 오는 데는 어떤 이유가 있습니까? 그것의 무엇을 위해 결국 거기에 ... 왜 2가 작동하고 올바른 ID를 얻는 것처럼 그 소리가 작동하지 않는 질문에 대한 다음 문제는 3 단계로 당신이 우리에게 보여준 것처럼 보이지 않는 것입니다 에 대한 코드. – Chris

+0

예 b/c 메신저 역동적 인 테이블이 내가 다시 게시 할 때마다 내가 다시 게시하고 싶지 않아. 그것은 내 페이지 속도를 늦춘다. 디버거에서 단계별로 ID를 찾았지만 마지막 클릭 이벤트 처리기가 실행되지 않습니다. – Will

+0

@Will : 페이지의 일부만로드하려는 경우 Visual에 제공되는 Microsoft AJAX UpdatePanel 컨트롤을 고려하십시오. 사진관. 사용중인 Visual Studio의 버전은 무엇입니까? 또한 과거 질문을 검토하고 적절하다고 응답 한 것으로 표시해야합니다. – HardCode

답변

0

프로 시저에 여러 개의 핸들을 추가 할 수 있다는 사실을 알고 계십니까?

Protected Sub MultipleButtons_Click(ByVal sender As Object, ByVal e As EventArgs) _ 
    Handles btnCalc.Click, btnOtherCalc.Click 
    ' Do this 
End Sub 

이렇게하면 여러 이벤트에서 동일한 코드를 실행하고 보낸 사람을 사용하여 어떤 단추가 사용되었는지 확인할 수 있습니다. 동적으로 빌드해야하는 경우 런타임에 이벤트 핸들러를 추가 할 수 있지만 다른 질문이 있습니다.

관련 문제