我使用bindnig source构建我的数据网格:
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);
类似吗?
答案 0 :(得分:2)
为什么不使用绑定源删除它 例如
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。 Insert on 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
答案 1 :(得分:2)
在绑定源处删除,而不是在数据集
处删除