C# WinForm中,关于DataGrid批量删除的问题,请教高手!
WebForm中,DataGrid的批量删除比较容易,而在WinForm中,由于DataGrid没有Items属性,如果要进行批量删除则比较困难,我找了好多资料都没有看到相关的办法。当我用for(int i=0;i<ds.Tables["CurrentTable"].Rows.Count;i++)来循环删除时,只能删除选定行的第一行,而且删除第一行后我也观察到DataTable.Rows的索引发生了变化。虽然可以用键盘上DEL来进行,但是我想在删除前给一个提示,请问高手有何解决办法吗?如果要用菜单来模拟按DEL键,该如何进行?
不胜感激!
问题点数:50、回复次数:6Top
1 楼lidong6(立冬)回复于 2006-03-04 11:16:19 得分 10
使用datatable.Row_Deleting事件.Top
2 楼kingdhy(飞鹰)回复于 2006-03-04 11:24:59 得分 0
能给段示例代码吗?谢谢!Top
3 楼solsolsol(秋水萧萧 认真思考每个问题,帮人也是一种学习)回复于 2006-03-06 14:51:58 得分 10
int maxRow = ((DataTable)MyDG.DataSource).Rows.Count;
int temp = 0;
MeasureMode mm = new MeasureMode(connStr);
try
{
for(int i = 0; i< maxRow; i++)
{
if(MyDG.IsSelected(i))
{
string code = MyDG[i,0].ToString();
mm.DeleteData(code);
temp++;
}
}
if(temp==0)
{
MessageBox.Show("请选择要删除的行!","错误");
}
else
{
Bind();
MessageBox.Show("删除成功!","信息");
}Top
4 楼cansum396(漆黑的夜)回复于 2006-03-10 17:41:49 得分 0
makeTop
5 楼serversql(啊初)回复于 2006-03-10 22:12:56 得分 20
//代码删除
for(int i=((DataTable)this.dataGrid1.DataSource).Rows.Count-1;i>=0;i--)
{
if(dataGrid1.IsSelected(i))
{
((DataTable)this.dataGrid1.DataSource).Rows.Remove(i);
}
}
//按键删除
dataGrid1.KeyDown +=new KeyEventHandler(dataGrid1_KeyDown);
private void dataGrid1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Delete)
{
if(MessageBox.Show("是否要删除","",MessageBoxButtons.RetryCancel) == DialogResult.Cancel)
{
e.Handled = false;//忘记是等FALSE还是等TRUE了你自己侧一下
}
}
}Top
6 楼yz1199(逃离孤独)回复于 2006-03-11 09:33:16 得分 10
指定一个startrow和一个endrow,循环删除中间的行,具体方法上面有.可以实现的.我这样用过Top




