2013-06-03 4 views
0

У меня возникла проблема с удалением строк сетки. Я заселение мой GridView, выбрав значение в DropDownList затем, нажав на кнопку Добавить, значение будет добавлено в моей GridView, вот мой код:Удалить строки в Gridview

В моей ASPX:

<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> 

В мой код позади:

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(); 
} 

Теперь я пытаюсь удалить проверенные строки на моей GridView с этим кодом:

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(id); 
       } 
      } 
     } 
    } 
    GridView1.DataBind(); 
} 

С приведенными выше кодами btnRemove, если я нажму на него, он удалит все значения в моем gridview даже в непроверенных строках, и я хочу, чтобы только проверенные строки не все. Есть ли другой простой способ удаления строк в gridview, чем использование флажка? Я использую C# с asp.net.

+0

пожалуйста показать код, где вы actualy удаленные элементы в дель - ArrayList –

+0

В вашем 3 секции кода сокровенное гнезда, что является PRODUCTID? вы имели в виду id? – deepee1

ответ

0

Удалите строки, но не перевяжите сетку.

Используйте GridView.DeleteRow method, чтобы удалить строки, которые вы отфильтровали в arraylist del.

Когда вы звоните GridView1.DataBind(); без установки DataSource, вы ничего не будете связывать.

Похожие

Смежные вопросы