在C#中删除DataGridView中的选定行?

4
我目前正在使用这段代码:
foreach (DataGridViewRow item in this.dataGridView1.SelectedRows)
{
    dataGridView1.Rows.RemoveAt(item.Index);
}

我在第一列中有复选框,但是使用这段代码时,它只获取所选的。如何仅获取所选的复选框以及与该行一起删除?

5个回答

6
你想要的是类似这样的东西。
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
    if (Convert.ToBoolean(dataGridView1.Rows[i]
                          .Cells[yourCheckBoxColIndex].Value) == true)
    {
        dataGridView1.Rows.RemoveAt(i); 
    }
}

我希望这可以帮到你。

1

尝试类似这样的东西:

foreach(DataGridViewRow row in this.dataGridView1.Rows)
{
    var checked = Convert.ToBoolean(row.Cells[0].Value); // Assuming the first column contains the Checkbox
    if(checked)
        dataGridView1.Rows.RemoveAt(row.Index);
}

1

这可能是这样的…… 这是一个listview的例子,然而概念几乎在那里。 遍历项目并找到复选框ID,然后删除所选项。 希望这可以帮助到你。

public void btnDeleteClick(object sender, EventArgs e)
    {
        // Iterate through the ListViewItem
        foreach (ListViewItem row in ListView1.Items)
        {
            // Access the CheckBox
            CheckBox cb = (CheckBox)row.FindControl("cbxID");
            if (cb != null && cb.Checked)
            {
                // ListView1.DataKeys[item.DisplayIndex].Values[0].ToString()
                try
                {

                }
                catch (Exception err)
                {

                }
            }
        }
    }

0

试试这个:

if (dgv.SelectedRows.Count>0)
        {
            dgv.Rows.RemoveAt(dgv.CurrentRow.Index);
        }

-2
int s = 1;
        for (int i = 0; i < dataGridView1.Rows.Count; i++)
        {
            for (int j = s - 1; j < dataGridView1.Rows.Count - 1; j++)
            {
                if (Convert.ToInt32(dataGridView1["Stok", j].Value) < 5)
                { s = j; dataGridView1.Rows.RemoveAt(j); break; }
            }
        }
        dataGridView1.Refresh();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接