2010-03-19 8 views
4

J'ai un gridview qui inclut une liste déroulante créée dynamiquement. Lorsque vous modifiez les valeurs déroulantes et effectuez une mise à jour de masse sur la grille (btnUpdate.click), je dois créer les contrôles dans la page init afin qu'ils soient disponibles pour viewstate. Cependant, j'ai plusieurs autres boutons qui provoquent également une publication et je ne veux pas créer les contrôles dans la page init, mais plutôt plus tard dans les événements de clic de bouton.Obtenir le contrôle qui a déclenché la publication dans page_init

Comment puis-je savoir quel contrôle a déclenché la publication dans page_init? __EVENTTARGET = "" et request.params ("btnUpdate") n'est rien

Répondre

7

Il est possible de déterminer quel contrôle a causé un PostBack en regardant Request.Form["__EVENTTARGET"]. Le problème avec ceci est que les ID de bouton ne s'afficheront pas à moins que vous définissiez leur UseSubmitBehavior sur false. Voici un exemple:

.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

vous devez utiliser UniqueID pour correspondre à la valeur de Request.Form [ "__ eventtarget"]. ToString() l'ID du contrôle seul n'est pas suffisant –

Questions connexes