2016-10-07 56 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

我解决了这个错误,通过禁用视图状态的网格视图,但我也会尝试这一个:)谢谢:) –