2010-12-17 6 views
2

HTML Page:événement ASP.NET GridView RowUpdating pas de tir

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> 
      <ContentTemplate> 
       <asp:GridView ID="Grd_Threshold" runat="server" CellPadding="4" ForeColor="#333333" 
        GridLines="Both" AutoGenerateColumns="false" EmptyDataText="No Records." PageSize="8" 
        AllowPaging="true" OnPageIndexChanging="Grd_Threshold_PageIndexChanging" OnRowCommand="Grd_Threshold_RowCommand" 
        DataKeyNames="ID" AutoGenerateEditButton="true" OnRowCancelingEdit="Grd_Threshold_RowCancelingEdit" OnRowEditing="Grd_Threshold_RowEditing" 
        OnRowUpdating="Grd_Threshold_RowUpdating"> 
        <Columns>       
         <asp:TemplateField HeaderText="No."> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Name" ItemStyle-Width="150px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("CLNAME") + ", " + Eval("CFNAME") +" " +Eval("CMNAME")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Doctor" ItemStyle-Width="150px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("DOCTORNAME")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Item Name" ItemStyle-Width="150px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("INAME")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Item Form" ItemStyle-Width="100px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("IFORM")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Item Strength" ItemStyle-Width="100px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("ISTRG")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Order Date" ItemStyle-Width="100px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("ORDERDATE")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Price" ItemStyle-Width="80px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("PRICE")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Quantity" ItemStyle-Width="80px"> 
          <EditItemTemplate> 
           <asp:TextBox ID="Txt_Qty" runat="server" Width="50px" Text='<%# Eval("QTY")%>'></asp:TextBox> 
          </EditItemTemplate> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("QTY")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="User" ItemStyle-Width="100px"> 
          <ItemTemplate> 
           <asp:Label ID="Label1" runat="server" Text='<%# Eval("USERID")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
        <RowStyle BackColor="#E3EAEB" /> 
        <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> 
        <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> 
        <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" /> 
        <EditRowStyle BackColor="#7C6F57" /> 
        <AlternatingRowStyle BackColor="White" /> 
       </asp:GridView> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

code CS:

protected void Page_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       Title = "Dashboard"; 
       if (!Master.Page.IsPostBackEventControlRegistered) 
       { 
        BindGrid(); 
       } 
      } 
      catch (Exception ex) 
      { 
       Common.WriteLog(ex); 
      } 
     } 

     private void BindGrid() 
     { 
      try 
      { 
       if (SessionUtility.DashboardRecords == null || SessionUtility.DashboardRecords.Rows.Count == 0) 
       { 
        string WebServiceUrl = SessionUtility.WebServiceUrl + "/GetAllOrders/"; 
        JsonArrayCollection ReqResponse = Common.GetWebServiceResponse_MultipleValues(WebServiceUrl, "GET"); 
        DataTable Patients = Common.ConvertJsonArrayObjectCollectionToDataTable(ReqResponse); 

        SessionUtility.DashboardRecords = Patients; 
       } 

       if (SessionUtility.UserRight != "1") 
       { 
        //Grd_Threshold.Columns[0].Visible = false; 
        Grd_Threshold.AutoGenerateEditButton = false; 
       } 
       else if (SessionUtility.UserRight == "1") 
       { 
        Grd_Threshold.AutoGenerateEditButton = true; 
       } 
       Grd_Threshold.DataSource = SessionUtility.DashboardRecords; 
       Grd_Threshold.DataBind(); 
       UpdatePanel1.Update(); 
      } 
      catch (Exception ex) 
      { 
       Common.WriteLog(ex); 
      } 
     } 

Salut à tous,

Dans le code ci-dessus écrit seul événement EDIT est étant tiré & qui est seulement une fois après cette mise à jour, annuler aucun événement est déclenché. Qu'est-ce que je fais de mal? Tout ce que je veux faire est de changer la couleur GridRow sur la base de la valeur entrée dans le champ QTY.

Répondre

3

J'ai trouvé le problème. L'événement ne s'est pas déclenché à cause des mêmes identifiants que j'avais donnés à l'étiquette dans chaque rangée. J'espère que cela aidera à quelqu'un.

0

Incertain sur votre utilisation de IsPostBackEventControlRegistered - Je ne l'ai jamais vu utilisé auparavant, mais il semble que vous annulez probablement votre événement de mise à jour par DataBind() à Page_Load().

Page_Load est déclenché chaque fois que la page se charge, ce qui modifie alors ce que fait la page en réinitialisant la grille.

Essayez d'envelopper le contrôle:

if(!IsPostBack) 
{ 
    // bind 
} 

de sorte qu'il ne fait que cela sur la première page de chargement.

+0

De plus, et je ne suis pas un expert en attractivité, il semble que vos blocs try try soient un peu généraux. Cela peut entraîner l'annulation des exceptions (même si elles sont consignées), puis le programme peut continuer dans un état inconnu. Vous pouvez exposer des failles de sécurité ou corrompre vos propres données en utilisant la gestion générale des exceptions comme ceci. – rtpHarry

+0

J'ai utilisé la propriété IsPostBack mais la même chose s'est produite. – KhanZeeshan

+0

En outre, lorsque je clique sur le lien Mettre à jour dans l'événement grid Page_Load est déclenché à chaque fois, mais pas l'événement RowUpdating. – KhanZeeshan

Questions connexes