c# datagridview 删除行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# datagridview 删除行相关的知识,希望对你有一定的参考价值。

如下图:
我点击删除 的时候 ,提示我选择要删除 哪一行, 请高手指教一下代码 怎么实现?

设置一个标识(int indexid),是为了指定你要显示的那一行
在删除行的时候设置indexid为删除的当前行的index:
indexid = dataGridView1.CurrentRow.Index;

在更新数据的时候可以如下设置,这些设置是为了防止指定的当前行出错
if (indexid < 0)

if (indexid > dataGridView1.Rows.Count - 1)

下面这句是指定datagridview的当前行
dataGridView1.CurrentCell = dataGridView1.Rows[indexid].Cells[0];
下面是datagridview的一个方法selectionchanged,当列表选中的行发生变化时调用这个函数
dataGridView1_SelectionChanged(sender, e);

具体示例如下:
int indexid=0;

///删除的函数
private void btnDel_Click(object sender, EventArgs e)

DataGridViewCell cell = dataGridView1.CurrentRow.Cells[0]; //要被删除的当前行
indexid = dataGridView1.CurrentRow.Index;//得到被删除那行的索引
DataUpdate(sender, e); //具体函数如下


///DataUpdate函数
private void DataUpdate(object sender, EventArgs e)

///////////////这个地方可以是数据的更新///////////////
if (indexid < 0)

if (indexid > dataGridView1.Rows.Count - 1)

dataGridView1.CurrentCell = dataGridView1.Rows[indexid].Cells[0];//这里注意Cells中的索引必须是可见的列
dataGridView1_SelectionChanged(sender, e);


///dataGridView1_SelectionChanged函数,这个函数是datagridveiw控件自带的方法
private void dataGridView1_SelectionChanged(object sender, EventArgs e)

if (dataGridView1.CurrentRow== null)
return;
/////////////这里是每一行的某一列对应着你的控件的显示///////////
如:textbox1.Text=dataGridView1.CurrentRow.Cell[0].Value.ToString();
参考技术A 在删除按钮事件里写:
if (dataGridViewX1.Focus() == true)


eTaskDialogButton button = new eTaskDialogButton();
button |= eTaskDialogButton.Yes;
button |= eTaskDialogButton.No;
TaskDialogInfo info = new TaskDialogInfo("提示", eTaskDialogIcon.Delete, "确定删除吗?", "删除后不能恢复,请慎重考虑", button, eTaskDialogBackgroundColor.Blue);
eTaskDialogResult result = TaskDialog.Show(info);
//上面这些是我第三方控件的messagebox,你可以不用在 意,就是弹出对话框点是否
if (result == eTaskDialogResult.Yes)

dataGridViewX1.Rows.Remove(dataGridViewX1.CurrentRow);
//删除光标所在行

else


TaskDialogInfo info = new TaskDialogInfo("提示", eTaskDialogIcon.Information, "请选择", "点击表格中的任何一行即可选中",eTaskDialogButton.Ok,eTaskDialogBackgroundColor.Blue);
TaskDialog.Show(info);

我想用C#中的datagrid控件做一个删除行(点击按钮删除datagrid中的所指定的任意一行)

谢谢咯……

基本数据绑定
熟悉 DATAGRIDVIEW 的最佳方法就是实际尝试一下,无需配置任何属性。就像 DATAGRID 一样,您可以使用 DATASOURCE 属性来绑定 DATATABLE 对象(或从 DATATABLE 派生的对象)。

DIM DS AS DATASET = GETDATASET()DATAGRIDVIEW1.DATASOURCE = DS.TABLES("CUSTOMERS")
与 DATAGRID 不同的是,DATAGRIDVIEW 一次只能显示一个表。绑定整个 DATASET,则不会显示任何数据,除非您使用要显示的表名设置了 DATAMEMBER 属性。

DATAGRIDVIEW1.DATASOURCE = DSDATAGRIDVIEW1.DATAMEMBER = "CUSTOMERS"
美化 DATAGRIDVIEW
DATAGRIDVIEW 的默认外观仅仅比 DATAGRID 略有改进,但是使用几项快速调整功能,您可以将其显著改进。

其中的一个问题就是列无法自动展开以适合其包含的数据。您可以使用 DATAGRIDVIEW.AUTOSIZECOLUMNS() 方法以及 DATAGRIDVIEWAUTOSIZECOLUMNCRITERIA 枚举中的某个值来解决此问题。您可以选择根据标题文本、当前显示的行或表中的所有行的的宽度来调整列宽。

' 根据标题或此列的某一行中' 最长一段文本的宽度调整' 列宽。DATAGRIDVIEW1.AUTOSIZECOLUMNS( _DATAGRIDVIEWAUTOSIZECOLUMNCRITERIA.HEADERANDROWS)
请记住,此方法必须在绑定数据后调用,否则不会产生任何效果。你可能还需要在用户编辑数据后使用它(可能在响应 DATAGRIDVIEW.CELLVALUECHANGED 等事件时)。

不增加列宽,则可以更改行高。默认情况下,列中的文本会跨越多行。您使用 DATAGRIDVIEW.AUTOSIZEROWS() 方法,则行会根据其中的内容调整高度。使用此方法前,您可能希望增加列宽,尤其是在字段包含大量文本时。例如,以下代码片段使“说明”列的列宽增加为原列宽的四倍,调整行高以容纳其内容。

DATAGRIDVIEW.COLUMNS("DESCRIPTION").WIDTH *= 4DATAGRIDVIEW.AUTOSIZEROWS( _DATAGRIDVIEWAUTOSIZEROWSMODE.HEADERANDCOLUMNSALLROWS)
比较了自动调整 DATAGRIDVIEW 大小的各种方法。

另一个合理的更改是清理每一列中显示的标题文本。例如,标题“ORDER DATE”比字段名称“ORDERDATE”看上去更为专业。这项更改很容易进行。您只需从 DATAGRIDVIEW.COLUMNS 集合中检索相应的 DATAGRIDVIEWCOLUMN,并修改其 HEADERTEXT 属性:

DATAGRIDVIEW.COLUMNS("ORDERID").HEADERTEXT = "ORDER ID"

使用 DATAGRIDVIEW 选择单元格
默认情况下,DATAGRIDVIEW 允许自由选择。用户可以突出显示单元格或单元格组,可以一次突出显示所有单元格(通过单击网格右上角的方块),还可以突出显示一行或多行(通过在行标题列中单击)。根据选择模式,用户甚至能够通过选择列标题来选择一列或多列。通过使用 DATAGRIDVIEWSELECTIONMODE 枚举中的某个值来设置 DATAGRIDVIEW.SELECTIONMODE 属性,可以控制此行为,如下所述:
通过 DATAGRIDVIEW,可以使用以下三个属性方便地检索选定的单元格:SELECTEDCELLS、SELECTEDROWS 和 SELECTEDCOLUMNS。无论使用的是哪种选择模式,SELECTEDCELLS 都始终返回 DATAGRIDVIEWCELL 对象的集合。另一方面,使用行标题选择了整个行,则 SELECTEDROWS 只返回信息,而使用列标题选择了整个列,则 SELECTEDCOLUMNS 也只返回信息。
参考技术A 你要把这行从数据库中删除还是从这个控件中删除?
用dataGrid1.CurrentRowIndex获取当前选中的行的索引,下面的操作你自己应该可以做了把。
参考技术B 先用SQL语句
string strSQL = "delete from 表名 where 列名=值";
DBHelper.connection.Open();
SqlCommand command = new SqlCommand(strSQL, DBHelper.connection);
int num=command.ExecuteNonQuery();
if (num > 0)

MessageBox.Show("删除成功!", "信息提示");


SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(ds.Tables[0]);
在这里也说不明白!我QQ153348664,或者你发你的邮箱来,我发给你!
参考技术C 在它的删除事件中写代码
只能说这么多了

以上是关于c# datagridview 删除行的主要内容,如果未能解决你的问题,请参考以下文章

c#在datagridview中删除指定行并更新到数据库

C# - 删除行后如何刷新 DataGridView

C# excel文件导入导出

C#动态增加行删除行

C# datagridview 删除一行后自动定位到下一行

在c#中怎么删除datagridview里面的一条数据