Сведения о вопросе

profi

20:26, 11th August, 2020

Теги

c#   data-binding    

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

Просмотров: 429   Ответов: 7

Я провел небольшое исследование в этой области, и кажется, что единственный способ отсортировать поле со списком с привязкой к данным-это отсортировать сам источник данных (в данном случае a DataTable в A DataSet).

Если это так, то возникает вопрос, как лучше всего отсортировать DataTable?

Привязки поля со списком устанавливаются в конструкторе инициализировать с помощью

myCombo.DataSource = this.typedDataSet;
myCombo.DataMember = "Table1";
myCombo.DisplayMember = "ColumnB";
myCombo.ValueMember = "ColumnA";



  Сведения об ответе

$DOLLAR

15:24, 3rd August, 2020

Если вы используете DataTable, вы можете использовать свойство (DataTable.DefaultView) DataView.Sort . Для большей гибкости вы можете использовать компонент BindingSource. BindingSource будет DataSource вашего combobox. Затем вы можете изменить источник данных с DataTable на список, не меняя DataSource из combobox.

Служит компонент BindingSource многие цели. Во-первых, это упрощает привязка элементов управления формы к данным с помощью обеспечение валютного управления, изменение уведомления и другие услуги между элементами управления Windows Forms и источник данных.


  Сведения об ответе

Chhiki

19:19, 5th August, 2020

Вы можете фактически отсортировать представление по умолчанию на DataTable:

myDataTable.DefaultView.Sort = "Field1, Field2 DESC";

Это позволит сортировать любые строки, которые вы получаете непосредственно из DataTable.


  Сведения об ответе

VCe znayu

08:19, 22nd August, 2020

У Джоша Смита есть запись в блоге , которая отвечает на этот вопрос, и делает все это в XAML.


  Сведения об ответе

VERSUION

06:44, 3rd August, 2020

Убедитесь, что вы привязываете DefaultView к источнику данных элементов управления, после установки свойства сортировки, а не таблицы:

myCombo.DataSource = this.typedDataSet.Tables["Table1"].DefaultView;
myCombo.DisplayMember = "ColumnB";
myCombo.ValueMember = "ColumnA";


  Сведения об ответе

DAAA

09:28, 9th August, 2020

Должны ли данные быть в A DataTable? Использование SortedList и привязка его к полю со списком было бы более простым способом.

Если вам нужно использовать DataTable, вы можете использовать метод Select для извлечения DataView и передачи параметра сортировки.

DataView dv = myDataTable.Select("filter expression", "sort");


  Сведения об ответе

#hash

22:50, 25th August, 2020

Самый простой способ сортировки ComboBox-это использовать свойство ComboBox.Sorted . Однако это не сработает, если вы используете привязку данных. В этом случае вам придется сортировать сам источник данных.

Вы можете использовать либо SortedList , либо SortedDictionary (оба вида сортируются по ключу), либо DataView .

DataView имеет свойство сортировки , которое принимает выражение сортировки (строка), например:

view.Sort = "State, ZipCode DESC";

В приведенном выше примере состояние и ZipCode являются столбцами в DataTable, используемом для создания DataView.


  Сведения об ответе

VCe znayu

08:19, 24th August, 2020

Я понимаю, что вы уже выбрали свой ответ на этот вопрос, но я бы предложил поместить DataView в вашу форму, привязать ее к DataSet/DataTable, и установить сортировку на вид в конструкторе. Затем вы привязываете свой combobox к DataView, а не к DataSet/DataTable.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться