2010-03-19 48 views
4

我有一個包含動態創建的下拉列表的gridview。當更改下拉值並在網格上進行批量更新時(btnUpdate.click),我必須在頁面init中創建控件,以使它們可用於視圖狀態。但是,我有幾個其他按鈕也會導致回發,並且我不想在頁面init中創建控件,而是稍後在按鈕中單擊事件。獲取控制,觸發page_init回發

如何判斷哪個控件在page_init中觸發了回發? __EVENTTARGET =「」和request.params(「btnUpdate」)什麼也沒有

回答

7

通過查看Request.Form["__EVENTTARGET"]可以確定哪個控件導致回發。問題在於按鈕ID不會顯示,除非您將其UseSubmitBehavior設置爲false。這裏有一個例子:

.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     switch (Request.Form["__EVENTTARGET"].ToString()) 
     { 
      case "ddlOne": 
       break; 
      case "btnOne": 
       break; 
      case "btnTwo": 
       break; 
     } 
    } 
} 

的.aspx

<form id="form1" runat="server"> 
    <asp:DropDownList ID="ddlOne" AutoPostBack="true" runat="server"> 
     <asp:ListItem Text="One" Value="One" /> 
     <asp:ListItem Text="Two" Value="Two" /> 
    </asp:DropDownList> 
    <asp:Button ID="btnOne" Text="One" UseSubmitBehavior="false" runat="server" /> 
    <asp:Button ID="btnTwo" Text="Two" UseSubmitBehavior="false" runat="server" /> 
</form> 
+0

你應該使用的UniqueID,以配合中的Request.Form [ 「__ EVENTTARGET」]的值。 ToString()只有控件的ID是不夠的 – 2011-06-06 14:14:00