C# 如何通过代码在数据网格视图上选择和删除多行?
这是我的密码,这是一本简单的电话簿,这是它的一部分C# 如何通过代码在数据网格视图上选择和删除多行?,c#,datagridview,C#,Datagridview,这是我的密码,这是一本简单的电话簿,这是它的一部分 private void btnDeleteFromGV_Click(object sender, EventArgs e) { try { dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); } catch (Exception) {
private void btnDeleteFromGV_Click(object sender, EventArgs e)
{
try
{
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
}
catch (Exception)
{
MessageBox.Show("PLS Enter a Row");
}
}
我希望在数据网格视图中同时选择两行或多行,并能够删除它们
我该怎么办 不幸的是,我无法完全理解需要什么,但我将把它留在这里,也许有人会发现它有用。 1要删除DataGridView中属性为:RowHeadService=true、SelectionMode=RowHeaderSelect、Multiselect=true的行,请用鼠标选择并按下按钮,您可以使用以下代码: 必须通过单击任何行标题来选择行 2要删除DataGridView中属性为:RowHeadService=false、Multiselect=true的行,请使用鼠标选择并按下按钮,您需要设置SelectionMode=FullRowSelect。代码将与1相同。 3要删除DataGridView中属性为:RowHeadService=false/true、SelectionMode=FullRowSelect/RowHeaderSelect、Multiselect=true的行,请在按下按钮后根据特殊条件使用以下代码:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.RowCount; i++) // loop's start to check condition
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) == -1) // example of condition
{
dataGridView1.Rows[i].Selected = true;
break;
}
}
}
int selectedCount = dataGridView1.SelectedRows.Count;
while (selectedCount > 0)
{
if (!dataGridView1.SelectedRows[0].IsNewRow)
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
selectedCount--;
}
dataGridView1.ClearSelection();
}
不幸的是,我不能完全理解需要什么,但我将把它留在这里,也许有人会发现它有用。 1要删除DataGridView中属性为:RowHeadService=true、SelectionMode=RowHeaderSelect、Multiselect=true的行,请用鼠标选择并按下按钮,您可以使用以下代码: 必须通过单击任何行标题来选择行 2要删除DataGridView中属性为:RowHeadService=false、Multiselect=true的行,请使用鼠标选择并按下按钮,您需要设置SelectionMode=FullRowSelect。代码将与1相同。 3要删除DataGridView中属性为:RowHeadService=false/true、SelectionMode=FullRowSelect/RowHeaderSelect、Multiselect=true的行,请在按下按钮后根据特殊条件使用以下代码:
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView1.RowCount; i++) // loop's start to check condition
{
for (int j = 0; j < dataGridView1.ColumnCount; j++)
{
if (Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value) == -1) // example of condition
{
dataGridView1.Rows[i].Selected = true;
break;
}
}
}
int selectedCount = dataGridView1.SelectedRows.Count;
while (selectedCount > 0)
{
if (!dataGridView1.SelectedRows[0].IsNewRow)
dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
selectedCount--;
}
dataGridView1.ClearSelection();
}
将最初选定的行放到数组中,然后将其从gridview中删除。试试这个:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.MultiSelect = true;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
private void button1_Click(object sender, EventArgs e)
{
var selectedRows = dataGridView1.SelectedRows
.OfType<DataGridViewRow>()
.Where(row => !row.IsNewRow)
.ToArray();
foreach (var row in selectedRows)
dataGridView1.Rows.Remove(row);
dataGridView1.ClearSelection();
}
}
删除前选定的行:
按下按钮后:
将最初选择的行放到数组中,然后将它们从gridview中删除。试试这个:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.MultiSelect = true;
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
}
private void button1_Click(object sender, EventArgs e)
{
var selectedRows = dataGridView1.SelectedRows
.OfType<DataGridViewRow>()
.Where(row => !row.IsNewRow)
.ToArray();
foreach (var row in selectedRows)
dataGridView1.Rows.Remove(row);
dataGridView1.ClearSelection();
}
}
删除前选定的行:
按下按钮后:
您可以在DB中写入列Id而不是单元格[4]:列Id
您可以在DB中写入而不是单元格[4]:列Id。它可以工作,但首先有两个问题:我必须为if语句IFselected.rows0或1或2或….中的每个条件编写代码。。。。。第二个是我的例外在这种情况下上升@agasi@MostafaBouzari请您详细解释一下问题是什么,您希望达到什么效果?@MostafaBouzari Ok。问题是如何通过代码多选择DataGridView。我想我问了那个问题。如果你想让我的代码符合你的需要,我需要理解这个洞的任务。你能添加更多信息或更正确地创建新问题并关闭此问题吗?我还需要知道如何在一个操作中删除多行@agasi它总是删除3行@agasi它可以工作,但首先有两个问题:我必须在if语句IFselected.rows0或1或2或….中为每个条件编写代码。。。。。第二个是我的例外在这种情况下上升@agasi@MostafaBouzari请您详细解释一下问题是什么,您希望达到什么效果?@MostafaBouzari Ok。问题是如何通过代码多选择DataGridView。我想我问了那个问题。如果你想让我的代码符合你的需要,我需要理解这个洞的任务。你能添加更多信息或更正确地创建新问题并关闭此问题吗?我还需要知道如何在一个操作中删除多行@agasi它总是删除3行@agasit这将删除所有行,因为当最后一行被删除时,下一行将被自动选中。@msmolcic它不会删除我所选的行selected@MostafaBouzari不知道你说的是什么意思。它将删除所有高亮显示的行,不是吗?必须使RowHeadersVisible=true并仅通过单击RowHeaders来选择行,然后它将被删除。否则,如果RowHeaders可见,则需要使用FullRowSelect模式=false@agasi这正是我想要做的。这将删除所有行,因为当删除最后一个选定行时,下一行将自动被选中。@msmolcic它不会删除我拥有的选定行selected@MostafaBouzari不知道你说的是什么意思。它将删除所有高亮显示的行,不是吗?必须使RowHeadersVisible=true并仅通过单击RowHeaders来选择行,然后它将被删除。否则,如果RowHeaders可见,则需要使用FullRowSelect模式=false@agasi这正是我想说的一般来说,最好在答案中包含解释和参考,而不仅仅是一段代码 你的答案中包含的信息和参考信息,而不仅仅是一段代码。
using (var context = new DB())
{
foreach (DataGridViewRow row in dgShow.SelectedRows)
{
string id = row.Cells[4].Value.ToString();
int x = Convert.ToInt16(id);
var del = context.ServicesPrice.Where(current => current.Id == x).FirstOrDefault();
context.ServicesPrice.Remove(del);
}
context.SaveChanges();