2012-04-20 74 views
0

我現在的問題有點複雜,請耐心等待。我有2個按鈕控件。在頁面加載中,我想知道按鈕在頁面加載時創建了一個回傳。通過研究,我在下面找到了這個片段,它按預期工作。所以這裏是我點擊按鈕時發生的事件情景。ASP按鈕控制開火

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 

的問題出現時,我點擊第二個按鈕,它步驟1和2,但從來不3.通過測試,我有它只做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 
+3

您是否嘗試過分配單獨的Click事件處理程序?這樣你就知道按鈕被點擊了。 – Ulises 2012-04-20 15:50:52

+1

目前還不清楚問題是什麼,該段似乎到處都是。另外,這對try/catch塊來說是非常糟糕的用法。你應該明確地檢查預期條件,不要依賴於異常,只是忽略異常。 Try/catch不適用於控制流。 – David 2012-04-20 15:50:55

+0

我希望這個更好的解釋可以幫助你理解我的問題david – Will 2012-04-20 16:10:30

回答

1

你真的應該看看只分配Click事件處理程序到你的按鈕。 Asp.net是故意設計的,所以你不必像上面那樣通過請求對象進行解析。