How to delete row in gridview using rowdeleting event?

前端 未结 16 1560

This is my .cs code :

protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
 Gridview1.DeleteRow(e.RowIndex);
 Gridvi         


        
相关标签:
16条回答
  • 2020-12-03 16:49

    See the following code and make some changes to get the answer for your question

    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        void CustomersGridView_RowDeleting
            (Object sender, GridViewDeleteEventArgs e)
        {
            TableCell cell = CustomersGridView.Rows[e.RowIndex].Cells[2];
            if (cell.Text == "Beaver")
            {
                e.Cancel = true;
                Message.Text = "You cannot delete customer Beaver.";
            }
            else
            {
                Message.Text = "";
            }
        }  
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>GridView RowDeleting Example</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <h3>
            GridView RowDeleting Example
        </h3>
        <asp:Label ID="Message" ForeColor="Red" runat="server" />
        <br />
        <asp:GridView ID="CustomersGridView" runat="server" 
            DataSourceID="CustomersSqlDataSource" 
            AutoGenerateColumns="False"
            AutoGenerateDeleteButton="True" 
            OnRowDeleting="CustomersGridView_RowDeleting"
            DataKeyNames="CustomerID,AddressID">
            <Columns>
                <asp:BoundField DataField="FirstName" 
                    HeaderText="FirstName" SortExpression="FirstName" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" 
                    SortExpression="LastName" />
                <asp:BoundField DataField="City" HeaderText="City" 
                    SortExpression="City" />
                <asp:BoundField DataField="StateProvince" HeaderText="State" 
                    SortExpression="StateProvince" />
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="CustomersSqlDataSource" runat="server"
            SelectCommand="SELECT SalesLT.CustomerAddress.CustomerID, 
                SalesLT.CustomerAddress.AddressID, 
                SalesLT.Customer.FirstName, 
                SalesLT.Customer.LastName, 
                SalesLT.Address.City, 
                SalesLT.Address.StateProvince 
                FROM SalesLT.Customer 
                INNER JOIN SalesLT.CustomerAddress 
                ON SalesLT.Customer.CustomerID = 
                    SalesLT.CustomerAddress.CustomerID 
                INNER JOIN SalesLT.Address ON SalesLT.CustomerAddress.AddressID = 
                    SalesLT.Address.AddressID"
            DeleteCommand="Delete from SalesLT.CustomerAddress where CustomerID = 
                @CustomerID and AddressID = @AddressID" 
            ConnectionString="<%$ ConnectionStrings:AdventureWorksLTConnectionString %>">
            <DeleteParameters>
                <asp:Parameter Name="AddressID" />
                <asp:Parameter Name="CustomerID" />
            </DeleteParameters>
        </asp:SqlDataSource>
        </form>
    </body>
    </html>
    
    0 讨论(0)
  • 2020-12-03 16:49

    I know this is a late answer but still it would help someone in need of a solution. I recommend to use OnRowCommand for delete operation along with DataKeyNames, keep OnRowDeleting function to avoid exception.

    <asp:gridview ID="Gridview1" runat="server" ShowFooter="true" 
         AutoGenerateColumns="false" OnRowDeleting="Gridview1_RowDeleting" OnRowCommand="Gridview1_RowCommand" DataKeyNames="ID">
    

    Include DataKeyNames="ID" in the gridView and specify the same in link button.

    <asp:LinkButton ID="lnkdelete" runat="server" CommandName="Delete" CommandArgument='<%#Eval("ID")%>'>Delete</asp:LinkButton>
    
    protected void Gridview1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
      if (e.CommandName == "Delete")
        {
          int ID = Convert.ToInt32(e.CommandArgument);
          //now perform the delete operation using ID value
        }
    }
    
    protected void Gridview1_RowDeleting(object sender, GridViewDeleteEventArgs e)    
    {
    //Leave it blank
    }
    

    If this is helpful, give me +

    0 讨论(0)
  • 2020-12-03 16:50
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        MySqlCommand cmd;
        string id1 = GridView1.DataKeys[e.RowIndex].Value.ToString();
        con.Open();
        cmd = new MySqlCommand("delete from tableName where refno='" + id1 + "'", con);
        cmd.ExecuteNonQuery();
        con.Close();
        BindView();
    }
    private void BindView()
    {
        GridView1.DataSource = ms.dTable("select * from table_name");
        GridView1.DataBind();
    }
    
    0 讨论(0)
  • 2020-12-03 16:51
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
        SqlCommand cmd = new SqlCommand("Delete From userTable (userName,age,birthPLace)");
        GridView1.DataBind();
    }
    
    0 讨论(0)
  • 2020-12-03 16:53

    In Grid use this code having ID as your Primary Element so to uniquely identify each ROW

    <asp:TemplateField>
                <ItemTemplate>
                <asp:HiddenField ID="Hf_ID" runat="server" Value='<%# Eval("ID") %>' />
                </ItemTemplate>
    </asp:TemplateField>
    

    and to search the uique ID use the code in C# code behind (basically this is searching hidden field and storing it in a var)

    protected void Grd_Registration_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            var ID = (HiddenField)Grd_Registration.Rows[e.RowIndex].FindControl("ID");
            //Your Delete Logic Goes here having ID to delete
    
            GridBind();
    
        }
    
    0 讨论(0)
  • 2020-12-03 16:58

    Try This Make sure You mention Datakeyname which is nothing but the column name (id) in your designer file

    //your aspx code

    <asp:GridView ID="dgUsers" runat="server" AutoGenerateSelectButton="True" OnDataBound="dgUsers_DataBound" OnRowDataBound="dgUsers_RowDataBound" OnSelectedIndexChanged="dgUsers_SelectedIndexChanged" AutoGenerateDeleteButton="True" OnRowDeleting="dgUsers_RowDeleting" DataKeyNames="id" OnRowCommand="dgUsers_RowCommand"></asp:GridView>

    //Your aspx.cs Code

    protected void dgUsers_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
    
                int id = Convert.ToInt32(dgUsers.DataKeys[e.RowIndex].Value);
                string query = "delete from users where id= '" + id + "'";
                //your remaining delete code
            }
    
    0 讨论(0)
提交回复
热议问题