排序c#后删除给定行索引的行

时间:2012-02-17 20:57:01

标签: c# visual-studio-2010 datagridview dataset

我使用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);类似吗?

2 个答案:

答案 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)

在绑定源处删除,而不是在数据集

处删除