Delete rows in Gridview

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • PetroTiburcio
    New Member
    • May 2013
    • 10

    #1

    Delete rows in Gridview

    hi, I am having a problem with deleting gridview rows. I am populating my gridview by selecting value in a dropdownlist then by clicking the add button, value will be added in my gridview, here is my code:

    in my aspx:

    Code:
    <asp:GridView ID="GridView1" runat="server" 
                    CssClass="mGrid" EmptyDataText = "There are no records to display">
                    <Columns>
                        <asp:TemplateField ItemStyle-Width="10">
                <HeaderTemplate>
                    
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server"/>
                </ItemTemplate>
            </asp:TemplateField>
                  
                    </Columns>
        </asp:GridView>
    in my code behind:

    Code:
    protected void Page_Load(object sender, EventArgs e)
        {
          if (!IsPostBack)
            {
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                DataColumn dc = new DataColumn("Id");
                DataColumn dc1 = new DataColumn("Name");
                //DataColumn dc2 = new DataColumn("Id");
    
                dt.Columns.Add(dc);
                dt.Columns.Add(dc1);
               // dt.Columns.Add(dc2);
                ds.Tables.Add(dt);
                Session["data"] = ds;
                GridView1.DataBind();
            }
        }
         
        protected void btnSave_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=GATE-PC\\SQLEXPRESS;Initial Catalog=dbProfile;Integrated Security=True");
            con.Open();
    
            foreach (GridViewRow row in GridView1.Rows)
            {
                SqlCommand cmdd = new SqlCommand("Insert into Profile (Id, profile_Id)VALUES(@id, @pid)", con); 
                cmdd.CommandType = System.Data.CommandType.Text;
                cmdd.Parameters.AddWithValue("@id", row.Cells[1].Text);
                cmdd.Parameters.AddWithValue("@pid", txtbid.Text);
                cmdd.ExecuteNonQuery();
            }
        }
    
        protected void btnAdd_Click(object sender, EventArgs e)
        {
            DataSet ds = (DataSet)Session["data"];
            DataRow dr = ds.Tables[0].NewRow();
            dr[0] = DropDownList1.Text.Trim();
            dr[1] = DropDownList1.SelectedItem;
            //dr[2] = txtId.Text.Trim();
            ds.Tables[0].Rows.Add(dr);
            GridView1.DataSource = ds;
            GridView1.DataBind();
        }
    Now, I am trying to remove checked rows on my gridview with this code:

    Code:
    protected void btnRemove_Click(object sender, EventArgs e)
        {
            ArrayList del = new ArrayList();
    
            foreach (GridViewRow row in GridView1.Rows)
            {
                if (row.RowType == DataControlRowType.DataRow)
                {
                    CheckBox chkDelete = (CheckBox)row.Cells[0].FindControl("CheckBox1");
    
                    if (chkDelete != null)
                    {
                        if (chkDelete.Checked)
                        {
                           
                            string id = row.Cells[1].Text;
                            del.Add(productId);
                        }
                    }
                }
            }
            GridView1.DataBind();
        }
    With the btnRemove codes above, If I clicked it, it'll remove all values in my gridview even the unchecked rows, what I want is that just the checked rows not all. And are there any other simple way of removing rows in a gridview than using checkbox? I am using c# with asp.net. Thanks in advance and God Bless.
  • Frinavale
    Recognized Expert Expert
    • Oct 2006
    • 9749

    #2
    In your btnRemove_Click code you should be removing rows whose IDs match those selected in the GridView from the DataSet.

    Then you need to set the DataSource of the GridView to the DataSet.

    Then you need to call DataBind.

    If you call DataBind without setting the source....it will bind the GridView to null/nothing and so all of your rows will be removed.

    -Frinny

    Comment

    Working...