2016-10-07 13 views
0

が機能していないことで、グリッドビューに編集可能なグリッド表示の更新は、私が編集可能にGridViewを使用してGridViewのデータを更新しようとしていますが、私は、コードbehind.Hereで編集テンプレートの値を取得することができません

protected void mGrid_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     string name=""; 
     string email=""; 
     string password=""; 
     string phone=""; 
     string address=""; 
     string id=""; 
     try 
     { 
     password = ((TextBox)mGrid.Rows[e.RowIndex].FindControl("txtMPass")).Text; 
     phone = ((TextBox)mGrid.Rows[e.RowIndex].FindControl("txtMphone")).Text; 
     address = ((TextBox)mGrid.Rows[e.RowIndex].FindControl("txtMaddress")).Text; 

     name = ((Label)mGrid.Rows[e.RowIndex].FindControl("lblMname")).Text; 
     email = ((Label)mGrid.Rows[e.RowIndex].FindControl("lblMemail")).Text; 

     id = getUID(email, name); 

     com.CommandText = "UPDATE Users SET [email protected],[email protected],[email protected] WHERE [email protected] and userType='Manager'"; 
     com.Parameters.AddWithValue("@pass", password); 
     com.Parameters.AddWithValue("@ph", phone); 
     com.Parameters.AddWithValue("@add", address); 
     com.Parameters.AddWithValue("@id",id); 
     com.ExecuteNonQuery(); 
     } 
     catch(Exception ex) 
     { 
      Response.Write(ex.ToString()); 
     } 

     mGrid.EditIndex = -1; 
     loadGrid(); 
     Response.Write(name + email + password + phone + address+""); 
    } 

private void loadGrid() 
    { 
     com.CommandText = "select * from Users where userType='Manager'"; 
     try 
     { 
      SqlDataReader r = com.ExecuteReader(); 
      mGrid.DataSource = r; 
      mGrid.DataBind(); 
      r.Close(); 
     } 
     catch (Exception exp) 
     { 
      Response.Write(exp.ToString()); 
     } 
    } 

を更新するためのコードですResponse.Writeを(---)私の代わりに私がここグリッド

の内側に変更された値の古い値を取得しています誰かが私を助けることができれば、私のGridViewの

<div class="col-md-9 table-responsive" style="margin- top:10%;float:right;margin-right:6%;font-family:Calibri;font-size:13px;"> 
    <asp:GridView ID="mGrid" runat="server" AutoGenerateColumns="false" OnRowUpdating="mGrid_RowUpdating" 
     CssClass="table table-striped" onrowediting="EditCustomer" GridLines="None" 
      OnRowCancelingEdit="CancelEdit" > 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate > 
        <asp:Image ImageUrl="~/images/manager.png" Width="30" Height="30" runat="server" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Name"> 
       <ItemTemplate > 
        <asp:Label ID="lblMname" runat="server" Text='<%# Eval("userName")%>' ></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:Label ID="lblMname" runat="server" Text='<%# Eval("userName")%>' ></asp:Label> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Email"> 
       <ItemTemplate> 
        <asp:Label ID="lblMemail" runat="server" Text='<%# Eval("userEmail")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:Label ID="lblMemail" runat="server" Text='<%# Eval("userEmail")%>'></asp:Label> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Password" > 
       <ItemTemplate> 
        <asp:Label ID="lblMPass" runat="server" Text='<%# Eval("userPass")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtMPass" runat="server" Text='<%# Eval("userPass")%>' ></asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Phone"> 
       <ItemTemplate> 
        <asp:Label ID="lblMphone" runat="server" Text='<%# Eval("userPh")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtMphone" runat="server" Text='<%# Eval("userPh")%>'></asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField HeaderText="Address"> 
       <ItemTemplate> 
        <asp:Label ID="lblMaddress" runat="server" Text='<%# Eval("userAdd")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtMaddress" runat="server" Text='<%# Eval("userAdd")%>' ></asp:TextBox> 
       </EditItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:LinkButton ID="lnkRemove" runat="server" CommandArgument = '<%# Eval("userID")%>' 
         OnClientClick = "return confirm('Do you want to delete?')" 
         Text = "Delete" OnClick="lnkRemove_Click"></asp:LinkButton> 
       </ItemTemplate> 
       </asp:TemplateField> 
       <asp:CommandField ShowEditButton="True" /> 
     </Columns> 
    </asp:GridView> 
</div> 

のですか?

答えて

0

GridView値の初期読み込みをIsPostBackチェック内に配置する必要があります。そうしないと、デフォルト値がロードされ、送信された値が上書きされます。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     loadGrid(); 
    } 
} 
+0

グリッドビューの表示状態を無効にしてこのエラーを解決しましたが、これも試してみます:) thanks :) –

関連する問題