C# dataGridView删除行

C# dataGridView删除行,第1张

这是我前两天做东西的与dataGridView删除行有关的代码,你凑合着看看,希望有用

#region //删除

private void myDataDelete_Click(object sender, EventArgs e)

{

try

{

#region //已选中行

//object myNullKey = null//空行

if (myDataView.SelectedRows.Count != 0)

{

string mySql

object myKey = new object()

//Int32 selectedRowCount = myDataView.Rows.GetRowCount(DataGridViewElementStates.Selected)

//myRow = myDataView.SelectedRows[selectedRowCount]

//前台 *** 作, *** 作的数据来自Excel或添加按钮 *** 作

if ((myDoData == 2)||(myDoData==4))

{

myDataView.AllowUserToAddRows = true//允许前台删除

foreach (DataGridViewRow myRow in myDataView.SelectedRows)

{

myDataView.Rows.Remove(myRow)

}

myDataView.AllowUserToAddRows = false//与添加有关的处理

}

//数据库 *** 作, *** 作的数据来自浏览或搜索(来自数据库)

else

{

try

{

foreach (DataGridViewRow myRow in myDataView.SelectedRows)

{

myKey = myRow.Cells[0].Value

mySql = "delete from TableMain where 序号='" + myKey + "'"

myDataBase.runCommand(mySql)

}

//刷新

if (myDoData == 0)

{

myDataBrowse_Click(sender, e)

}

if (myDoData == 1)

{

string strSql = "select * from TableMain where 序号='" + myTBoxNumSearch.Text.Trim().ToString() + "'"

myDataSet = myDataBase.getDataSet(strSql, "TableMain")

myDataView.DataSource = myDataSet.Tables[0]

}

//

MessageBox.Show("已删除")

}

catch (SqlException ex)

{

MessageBox.Show(ex.Message)

}

finally

{

//MessageBox.Show("删除失败")

myDataBase.closeDataBase()

}

}

}

#endregion

在C#中,如果要删除DataTable中的某一行,大约有以下几种办法:

1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index);可以直接删除行

2,datatable.Rows[i].Delete()。Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消删除。

只是delete掉的效果如下:

在删除DataTable中的行的时候,每删除一行,DataTable中所有行的索引都会发生改变。在循环删除DataTable.Row的时候不能使用foreach。使用foreach进行循环的时候,是不允许Table有删除和添加 *** 作的。

如果是按某列为条件进行删除,则每删完一行,整个Table的index就会立即发生变化,等于Table已经变成了一个新的表。但是索引却已经加1了。于是会造成第一列永远匹配不到。因此,每删除完一行,要跟着判断第一行是否满足删除条件。

我也是遇到了这样的问题,ravedatatext没有属性设置,属性设置是在DataView下面创建的字段控制的。因为你创建的那个TRaveStringField字段是String类型的,因此只能在创建完DataView根据所选的数据表再动态创建字段,我就是在这里over了,不过我考虑还是有一个笨办法:分别创建StringField、IntegerField、folatField等不同类型字段,然后根据数据表中的字段类型分别创建DataView下面的字段。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9941874.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存