2013-04-07 65 views
0

Table employeeTable包含GridView中沒有更新

EmployeeID int主鍵。 姓VARCHAR(50), 姓氏VARCHAR(50), 標題爲varchar(50), 國家VARCHAR(50)

創建一個GridView編輯,刪除和更新的功能。 但它不會更新時點擊更新。 我的代碼:

<asp:GridView ID="GridView1" runat="server" GridLines="None" AutoGenerateColumns="false" 

    AlternatingRowStyle-BackColor="#EEEEEE" EditRowStyle-BorderColor="Red" 

    onrowcancelingedit="GridView1_RowCancelling" 

    onrowdeleting="GridView1_RowDeleting" onrowediting="GridView1_RowEditing" 

    onrowupdating="GridView1_RowUpdating" DataKeyNames="EmployeeID">    

    <Columns>    

     <asp:TemplateField Visible="false" HeaderText="EmployeeID"> 

     <ItemTemplate> 

      <asp:Label runat="server" ID="EmployeeID" Text='<%#Eval("EmployeeID")%>' /> 

      </ItemTemplate> 

     </asp:TemplateField> 

     <asp:TemplateField HeaderText="LastName"> 

     <ItemTemplate> 

      <asp:Label runat="server" ID="LastName" Text='<%#Eval("LastName") %>' /> 

     </ItemTemplate> 

     <EditItemTemplate> 

     <asp:TextBox runat="server" ID="txtLastName" Text='<%#Eval("LastName") %>' /> 

     <asp:RequiredFieldValidator runat="server" ID="rfdLastName"     
      ControlToValidate="txtLastName" ValidationGroup="var1" ErrorMessage="*" /> 

     </EditItemTemplate> 

     </asp:TemplateField> 

     <asp:TemplateField HeaderText="Title"> 

     <ItemTemplate> 

      <asp:Label runat="server" ID="Title" Text='<%#Eval("Title") %>' /> 

     </ItemTemplate> 

     <EditItemTemplate> 

      <asp:TextBox runat="server" ID="txtTitle" Text='<%#Eval("Title") %>' /> 

      <asp:RequiredFieldValidator runat="server" ID="rfdTitle"     
       ControlToValidate="txtTitle" ValidationGroup="var1" ErrorMessage="*" /> 

     </EditItemTemplate> 

    </asp:TemplateField> 

     <asp:TemplateField HeaderText="Country"> 
     <ItemTemplate> 

     <asp:Label runat="server" ID="Country" Text='<%#Eval("country") %>'/> 

     </ItemTemplate> 

     <EditItemTemplate> 

     <asp:TextBox runat="server" ID="txtCountry" Text='<%#Eval("country") %>' /> 

     <asp:RequiredFieldValidator runat="server" ID="rfdCountry"   
       ControlToValidate="txtCountry" ValidationGroup="var1" ErrorMessage="*" /> 

     </EditItemTemplate> 

     </asp:TemplateField> 

    <asp:TemplateField HeaderText="Action"> 

    <ItemTemplate> 

    <asp:LinkButton ID="btnEdit" Text="Edit" runat="server" CommandName="Edit" /> 

    <br /> 
    <asp:LinkButton ID="btnDelete" Text="Delete" runat="server" CommandName="Delete" /> 

    </ItemTemplate> 

    <EditItemTemplate> 

    <asp:LinkButton ID="btnUpdate" Text="Update" runat="server" CommandName="Update" /> 

    <asp:LinkButton ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" /> 

    </EditItemTemplate> 

    </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 

我的C#代碼:??

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

namespace new1 
{ 
public partial class WebForm7 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
     { 
      SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings ["vinkpConnectionString"].ConnectionString); 
       conn.Open(); 
       SqlCommand comm = new SqlCommand("select EmployeeID,FirstName,LastName,Title,Country from employeeTable ", conn); 
       comm.ExecuteReader(); 
       conn.Close(); 
       SqlDataAdapter da = new SqlDataAdapter(comm); 
        DataTable dt = new DataTable(); 
        da.Fill(dt); 
        GridView1.DataSource = dt; 
        GridView1.DataBind(); 


      } 


    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
     { 

     GridView1.EditIndex = e.NewEditIndex; 

     BindGridData(); 

     } 

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 

     { 

     string s = GridView1.DataKeys[e.RowIndex].Value.ToString();    

     Label EmployeeID = GridView1.Rows[e.RowIndex].FindControl("EmployeeID") as Label; 

     TextBox LastName = GridView1.Rows[e.RowIndex].FindControl("txtLastName") as TextBox; 

     TextBox Title = GridView1.Rows[e.RowIndex].FindControl("txtTitle") as TextBox; 

     TextBox Country = GridView1.Rows[e.RowIndex].FindControl("txtCountry") as TextBox; 

     String UpdateQuery = string.Format("UPDATE employeeTable SET LastName,Title,Country WHERE EmployeeID='"+Convert.ToInt32(EmployeeID.Text)+"'",LastName.Text, Title.Text, Country.Text); 

      GridView1.EditIndex = -1; 

      BindGridData(UpdateQuery); 

      } 
    private void BindGridData(string Query) 

     { 

      string connectionstring = ConfigurationManager.ConnectionStrings["vinkpConnectionString"].ConnectionString; 
      using (SqlConnection conn = new SqlConnection(connectionstring)) 
      { 
      conn.Open(); 
      using (SqlCommand comm = new SqlCommand(Query +";select EmployeeID,FirstName,LastName,Title,Country from employeeTable ", conn)) 
       { 
        SqlDataAdapter da = new SqlDataAdapter(comm); 
        DataSet ds = new DataSet(); 
        da.Fill(ds); 
        GridView1.DataSource = ds; 
        GridView1.DataBind(); 

        } 

       } 

      } 

    protected void GridView1_RowCancelling(object sender, GridViewCancelEditEventArgs e) 
     { 
      GridView1.EditIndex = -1; 
      BindGridData(); 
     } 
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 

     { 
     string EmployeeID = GridView1.DataKeys[e.RowIndex].Value.ToString(); 
     string Query = "delete employeeTable where EmployeeID = " + EmployeeID; 
      BindGridData(Query); 
     } 
    private void BindGridData() 
     { 
      using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["vinkpConnectionString"].ConnectionString)) 
      { 
      conn.Open(); 
      using (SqlCommand comm = new SqlCommand("select EmployeeID,FirstName,LastName,Title,Country from employeeTable ", conn)) 

       { 
        SqlDataAdapter da = new SqlDataAdapter(comm); 
        DataSet ds = new DataSet(); 
        da.Fill(ds); 
        GridView1.DataSource = ds; 
        GridView1.DataBind(); 
       } 

      } 

     } 


    } 

爲什麼錯誤出現在代碼中的任何錯誤,當點擊文本框編輯點擊appeared.but更新的GridView沒有更新用表演。

回答

0

每次發生page_load事件時,您都會在Page_Load中綁定GridView1,導致postbackGridView的更改丟失。在!IsPostBack區塊中綁定網格以在回發中保留其狀態

protected void Page_Load(object sender, EventArgs e) 
{ 
     if(!Page.IsPostBack) 
     { 
      SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings ["vinkpConnectionString"].ConnectionString); 
      conn.Open(); 
      SqlCommand comm = new SqlCommand("select EmployeeID,FirstName,LastName,Title,Country from employeeTable ", conn); 
      comm.ExecuteReader(); 
      conn.Close(); 
      SqlDataAdapter da = new SqlDataAdapter(comm); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 
      GridView1.DataSource = dt; 
      GridView1.DataBind(); 
     } 
}