在对c#排序后删除给定行索引的行
本文关键字:索引 删除 排序 在对 | 更新日期: 2023-09-27 18:24:56
我用bindnig源构建了我的数据网格:
SqlDataAdapter adapter = new SqlDataAdapter(Datenbank.cmd);
dataSet1.Tables.Clear();
adapter.Fill(dataSet1, "Table");
bs = new BindingSource();
bs.DataSource = dataSet1.Tables["Table"];
dataGridView1.DataSource = bs;
现在我对网格进行排序
bs.Sort = "customer DESC";
现在我想删除第0行
dataSet1.Tables[0].Rows.RemoveAt(0);
但是,排序前位于位置0的行将被删除,而不是现在位于位置0 的行
//编辑:test.Tables[0].Rows.InsertAt(newRow, 0);
有类似的吗?
为什么不使用绑定源删除它例如
bs.RemoveAt(0)
关于test.Tables[0].Rows.InsertAt(newRow, 0);
BindingSource.Insert(int, object)
或BindingSource.List.Insert(int, object)
看起来不错,但当源是数据集时不支持它。
这是因为BindingSource.Insert只调用基础列表上的System.Collections.IList.Insert()
。基础列表是一个DataView。插入在Dataview上的实现是
private void System.Collections.IList.Insert(int index, object value)
{
throw ExceptionBuilder.InsertExternalObject();
}
你可以通过显示
System.Data.DataView dv = bs.List as DataView;
System.Collections.IList list = dv;
list.Insert(0,newRow); //BANG InsertExternalObject exception
在绑定源删除,而不是在数据集