Хороший набор для использования при привязке с DataGridView в C#

|| и && булевы операторы, и встроенные, как гарантируют, возвратятся или true или false. Ничто иное.

|, & и ^ побитовые операторы. Когда домен чисел, на которые Вы воздействуете, равняется всего 1 и 0, тогда они - точно то же, но в случаях, где Ваши булевские переменные не являются строго 1 и 0 – как имеет место с языком C – можно закончить с некоторым поведением, которое Вы не хотели. Например:

BOOL two = 2;
BOOL one = 1;
BOOL and = two & one;   //and = 0
BOOL cand = two && one; //cand = 1

В C++, однако, эти bool тип, как гарантируют, будет только или true или false (которые преобразовывают неявно в соответственно 1 и 0), таким образом, это - меньше беспокойства от этой позиции, но то, что люди не привыкли к наблюдению таких вещей в коде, приводит хороший аргумент в пользу того, что он не сделал его. Просто скажите b = b && x и быть сделанными с ним.

5
задан norlando 12 November 2009 в 15:28
поделиться

7 ответов

  • ObservableCollection won't work for a DataGridView : it implements INotifyCollectionChanged, not IBindingList, and the DataGridView doesn't know about INotifyCollectionChanged. It is intended for WPF bindings and is not used in Windows Forms
  • BindingList is a good option, but note that it doesn't support sorting or filtering out of the box. However, you can find some custom implementations of these features on the web.
  • DataTable is probably your best option if you need sorting and/or filtering capability
9
ответ дан 18 December 2019 в 11:57
поделиться

Структура привязки данных полностью различается между WinForms и WPF, поэтому (в общем) не существует "лучшего выбора" для обоих их.

Для WinForms использование общего BindingList позволит выполнить большую часть того, что вы хотите (хотя он не обрабатывает изменения отдельных элементов; вам придется реализовать это самостоятельно).

Для WPF ObservableCollection служит той же цели.

2
ответ дан 18 December 2019 в 11:57
поделиться

На самом деле Microsoft рекомендует использовать коллекцию в качестве вашей коллекции привязок, а не список из-за возможности выполнять автоматические функции, такие как добавление и удаление элементов, очистка коллекции или установка значения существующего item.

Класс коллекции в MSDN.

2
ответ дан 18 December 2019 в 11:57
поделиться

Если вы хотите привязать коллекцию к datagridview, я бы использовал список привязки. Хотя список привязки не поддерживает стандартную сортировку, вы можете расширить его, создав свой собственный список, производный от BindinList, и реализовать собственную сортировку.

См. здесь о том, как это сделать.

2
ответ дан 18 December 2019 в 11:57
поделиться

DataTable, возможно?

Кроме того, вы часто можете принудительно перерисовывать gridview и включать новые элементы, вызывая DataGridview.Invalidate () сразу после добавления элементов.

0
ответ дан 18 December 2019 в 11:57
поделиться

I created my own collection inheriting from BindingList which supports sorting, filtering, etc. It works well now but was a lot of work, I don't really recommend doing one yourself... I think there's one already implemented on CodeProject or a similar site, I'll give you the link if I find it.

Edit:

I found this CodeProject article with an implementation of IBindingList which supports sorting, filtering, etc. I didn't test it though, so I don't know how good the implementation is, but it might be worth checking it out.

0
ответ дан 18 December 2019 в 11:57
поделиться

I do not think there's a hard/general rule of what type of collection is best suited for DataGridView.

It really depends on a several factors:
- The nature of the data
- What are the operations (if any) to be performed from the UI to the DB (e.g. CRUD, sort, filter)
- Size of the data
etc etc..

0
ответ дан 18 December 2019 в 11:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: