удаление строки заданного индекса строки после сортировки c # - PullRequest
2 голосов
/ 18 февраля 2012

Я строю свою сетку данных из источника 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);?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

удалить в источнике привязки, а не в наборе данных

2 голосов
/ 18 февраля 2012

почему бы просто не удалить его, используя источник привязки например

  bs.RemoveAt(0)

Относительно test.Tables[0].Rows.InsertAt(newRow, 0);

BindingSource.Insert(int, object) или BindingSource.List.Insert(int, object) выглядит хорошо, но не поддерживается, если источником является DataSet.

Это потому, что 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
...