试试这样呢:int i=dsFiles1.File.Rows.Count-1;
while(i >= 0)
{
if (grdFilelist.IsSelected(i))
{
dsFiles1.File.Rows[i].Delete();//会删到别的行
}
i--;
}
while(i >= 0)
{
if (grdFilelist.IsSelected(i))
{
dsFiles1.File.Rows[i].Delete();//会删到别的行
}
i--;
}
解决方案 »
- httpwebrequest保持连接问题
- form写好以后,为什么窗口里没有出现应该load出来的东西
- vc#有注册表操作的吗?
- 怎样将一个DataTable的值赋给另一个DataTable
- C# 程序安装环境问题
- 各位高人请赐教,关于C#调用MSN API函数问题!!!
- 請高手解決一個低手問題,如何表示這個數組
- 怎么求的abcdefg这个字符串的长度啊???
- 新手对Validating事件的问题
- 在线等!!!在windows 2003中在asp中使用post方法出现405错
- 【【【【【【100分!!!截取字符串】】】】】】
- 请教:在c#中怎样连接access数据库?怎么读取xml里面的参数。谢谢!
----------
不行的!
我按了排序后就不行了,主要是数据在grid中的行号,跟在table中的行号是没对上的。
{
grdFilelist.Focus();
SendKey.send("{DELETE}");
}
while(i< dsFiles1.File.Rows.Count-1)
{
if (grdFilelist.IsSelected(i))
{
dsFiles1.File.Rows[i].Delete();
dsFiles1.File.AcceptChanges();//确认修改
//
}
i++;
}试一下,有问题再联系。
就是GRID的行号跟DataSet中的行号是没对应的,如何办?
dsFiles1.File.Rows[i].Delete();//会删到别的行这句里面的i做修正,改成
dsFiles1.File.Rows[i+1].Delete();
dsFiles1.File.Rows[i-1].Delete();
之类……不然看你怎么把dataset绑定到datagrid的,改改那里
using System.Date;if(MessageBox.Show("Are you sure to delete this part?","note",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.Yes)
{
///////////DELETE PARTS//////////////////////////////////////////////////////////
//找到行
DataColumn[] part_keys =new DataColumn[1];
part_keys[0] = service_DataSet1.Tables["PARTS"].Columns["PART_ID"];
service_DataSet1.Tables["PARTS"].PrimaryKey=part_keys;DataRow partRow = service_DataSet1.Tables["PARTS"].Rows.Find(service_DataSet1.Tables["PARTS"].Rows[grd_parts.CurrentRowIndex][0]);
if(partRow!=null)
{
try
{
partRow.Delete();storage_DataAdapter.Update(service_DataSet1,"PARTS");
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
else
{
MessageBox.Show("DataBase PARTS Error!!");
}
}
service_DataSet1是DateSet storage_DataAdapter是DataAdapter PARTS是基本表名
dsFiles1.File.Rows[i].Delete();这样不知道行不行,先找到你选择的行,再删掉。
----
您好!你的方法还是没有把Grid的行号和Dataset的行号对应起来啊!难道排序后就不能删除了吗?
{
grdFilelist.Focus();
SendKey.send("{DELETE}");
}
-----------
这个方式在readonly=true时无效啊!
dataSet11.Tables["XXX"].Rows[dataGrid1.BindingContext[dataSet11,"XXX"].Position].Delete();
dataSet11.Tables["XXX"].Rows[dataGrid1.BindingContext[dataSet11,"XXX"].Position].Delete();
-------------
只能删除一行,但有个怪问题:删除第三行,第四行就变为第三行,但新的第三行再也删除不了。
CurrencyManager cm=(CurrencyManager)dataGrid1.BindingContext[dataGrid1.DataSource,dataGrid1.DataMember];
((DataView)cm.List).Delete(cm.Position);
dsFiles1.File.Rows[i].Delete();
//更新删除
dsFiles1.File.AcceptChanges();
要通过CurrencyManager来删除, ((DataRowView)cm.Current).Delete();
以下测试通过,但不明白原理。CurrencyManager cm=(CurrencyManager)dataGrid1.BindingContext[dataGrid1.DataSource,dataGrid1.DataMember];
int top=dataGrid1.CurrentRowIndex;
int[] Lines=(int[]) Array.CreateInstance(typeof(int),dataGrid1.VisibleRowCount);
for(int k=1;k<dataGrid1.VisibleRowCount;k++)
{
if(dataGrid1.IsSelected(k)) Lines[k]=1;
}
for(int k=dataGrid1.VisibleRowCount-1;k>=0;k--)
{
if(Lines[k]==1)
{
//1. 不行
// this.dataSet11.Tables["XXX"].Rows[k].Delete();
// this.dataSet11.Tables["XXX"].Rows[k].AcceptChanges(); //2. OK
dataGrid1.CurrentRowIndex=k;
((DataRowView)cm.Current).Delete();
}
}