从gridview中删除多个记录

时间:2017-06-26 21:03:07

标签: c# asp.net gridview

~/.pub-cache

尝试在Buttob2点击时删除多行。但是,我一直收到错误,没有找到检查"。香港专业教育学院尝试在负载中添加!postback但仍然没有运气。 我也在同一个问题上修改了其他代码,唯一的答案是添加!postback

(gridview加载数据正常,$ dart example_interleaved_execution.dart有效)

1 个答案:

答案 0 :(得分:0)

如果我了解您的问题,您希望一次选择多行,并在单击按钮时删除这些记录。

你能尝试这段代码吗?

这样您可以排除使用单独的行删除事件,您可能不需要保留EnableViewState属性。

protected void btnDelete_Click(object sender, EventArgs e)   
{   
     foreach (GridViewRow row in GridViewEmployee.Rows)   
        {   
          if ((row.FindControl("chkSelect") as CheckBox).Checked)   
          {   
               int recordid = Convert.ToInt32(gridview.DataKeys[row.RowIndex].Value);   
               using (SqlConnection con = new SqlConnection(@"Data Source=mssql; Initial Catalog=dbname; Uid=sa; pwd=sa;"))   
               {   
                   con.Open();   
                   SqlCommand cmd = new SqlCommand("DELETE FROM `[table]` WHERE ID=" + recordid, con);   
                   cmd.ExecuteNonQuery();   
                   con.Close();   
               }   
           }   
       }
    BindGrid();   
}

我希望这有助于或提供一些见解。

<强>更新

List<int> list = new List<int>(); 
    if (ViewState["SelectedRecords"] != null) 
    { 
        list = (List<int>)ViewState["SelectedRecords"]; 
    } 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
        CheckBox chk = (CheckBox)row.FindControl("chkSelect"); 
        var selectedKey = 
        int.Parse(GridView1.DataKeys[row.RowIndex].Value.ToString()); 
        if (chk.Checked) 
        { 
            if (!list.Contains(selectedKey)) 
            { 
                list.Add(selectedKey); 
            } 
        } 
        else 
        { 
            if (list.Contains(selectedKey)) 
            { 
                list.Remove(selectedKey); 
            } 
        } 
    } 
    ViewState["SelectedRecords"] = list; 
    //BindGrid(); 
}