2016-04-20 5 views
0

Ich habe ein paar GridViews auf der Seite und sie haben beide das Problem. Wenn die OnRowDeleting-Funktion ausgelöst wird, finden das GridView (und der Absender) keine Zeilen. Ich habe die Gridview auf folgende Weise:GridView in OnRowDeleting keine Zeilen gefunden

 <asp:GridView ID="gridview9" runat="server" 
     DataKeyNames="id" 
     OnRowDeleting="deleteNumberFrom9" 
     AutoGenerateColumns="false" 
     CssClass="mGrid" 
     AlternatingRowStyle="alt"> 
     <Columns> 
      <asp:boundfield datafield="product_key" headertext="PRODUCT KEY" ItemStyle-HorizontalAlign="Center" /> 
      <asp:boundfield datafield="first_name" headertext="FIRST NAME"/> 
      <asp:boundfield datafield="last_name" headertext="LAST NAME"/> 
      <asp:boundfield datafield="email" headertext="EMAIL"/> 
      <asp:boundfield datafield="phone_number" headertext="PHONE NUMBER" ItemStyle-HorizontalAlign="Center" /> 
      <asp:CommandField HeaderText="DELETE NUMBER" ShowDeleteButton="True" ItemStyle-HorizontalAlign="Center" DeleteText="Delete" /> 
     </Columns> 
    </asp:GridView> 

Das Raster aus einer MySQL-Datenbank gefüllt wird:

GridView gv = gridview9; 
    String connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ToString(); 
    MySqlConnection connection = new MySqlConnection(connectionString); 
    connection.Open(); 
    MySqlCommand command = new MySqlCommand(queryString, connection); 
    if (addPhone)  command.Parameters.AddWithValue("@phone_number", "%" + phoneNumber + "%"); 
    if (addEmail)  command.Parameters.AddWithValue("@email", "%" + email + "%"); 
    if (addFirstName) command.Parameters.AddWithValue("@first_name", "%" + firstName + "%"); 
    if (addLastName) command.Parameters.AddWithValue("@last_name", "%" + lastName + "%"); 
    if (addProductKey) command.Parameters.AddWithValue("@product_key", "%" + productKey + "%"); 
    MySqlDataAdapter adapter = new MySqlDataAdapter(command); 
    System.Data.DataSet ds = new System.Data.DataSet(); 
    adapter.Fill(ds); 
    gv.DataSource = ds; 
    gv.DataBind(); 
    gv.Visible = true; 

Schließlich ist die OnRowDeleting Funktion ist:

protected void deleteNumberFrom9(object sender, GridViewDeleteEventArgs e) 
    { 
     int SID = Convert.ToInt32(gridview9.DataKeys[e.RowIndex].Value); 
     String phone_number = e.Values[4].ToString(); 
     deleteNumber(SID, phone_number, 9); 
    } 

Als ich das laufen Seite, gridview9 gibt 2 Zeilen korrekt zurück, aber wenn ich auf Löschen in einer der Zeilen klicke und deleteNumberFrom9 ausgelöst wird, ist gridview9.Rows.Count 0 anstatt 2. Wenn ich Sender zur Beobachtungsliste hinzufüge und die Zeilenanzahl i t ist auch 0.

Antwort

0

Sie müssen die Daten an das Gridview rebind nach dem Datensatz in der Datenbank zu löschen:

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

protected void gv_Deleting(object sender, GridViewDeleteEventArgs e) 
{ 
    ... 
    deleteNumber(SID, phone_number, 9); 
    BindData(); 
} 

private void BindData() 
{ 
    ... 
    gv.DataSource = ds; 
    gv.DataBind(); 
} 
Verwandte Themen