DataGridView и видимость строк
От: Slimunter  
Дата: 18.09.06 15:52
Оценка:
Даров, всезнающий ALL.

Подскажите как решить проблемку.

Имеем:
VC2005 + C# + WinForms.

Есть класс типа
class XDataItem
{
public int Type;
public string Name;
... // прочие поля и свойства.
}

Есть список этих XDataItem.

List<XDataItem> list = new List<XDataItem>(30000);

Эта табличка тображается в DataGridView.

dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = list;

Всё гут. всё работает. Внимание вопрос — как сделать чтобы при выставлении источника данных
dataGridView1.DataSource = list — некоторые строки у которых XDataItem.Type сразу станивились невидимыми.

Как я понимаю происходит следующее:
при выставлении источника данных dataGridView1.DataSource = list
берётся dataGridView1.RowTemplate и клонируется на каждый элемент из списка.

Варианты решения рассматривал такие:

1. Думал свой DataGridViewRow унаследовать и в конструкторе по DataGridViewRow.DataBoundItem проверять Type у элемента, но там его при создании нет — почему не работает.
2. после dataGridView1.DataSource = list можно пробежать по строкам и для нужных выставить Visible = false, но при большом количестве строк это ОЧЕНЬ медленно.
3. не использовать dataGridView1.DataSource = list , а самому сгенерить массив DataGridViewRow с нужным Visible, а потом добавить его в грид, но эт как-то неудобно кажется.

Мож как-то можно всё же добиться чтобы при dataGridView1.DataSource = list у нужных строк можно было автоматом выставить Visible. Мож его забиндить можно как на свойство из XDataItem.

Заранее благодарю.
Posted via RSDN NNTP Server 2.0
Re: DataGridView и видимость строк
От: Дьяченко Александр Россия  
Дата: 19.09.06 01:12
Оценка:
Здравствуйте, Slimunter, Вы писали:

Это можно сделать усложнив немного привязку к DataGidView. Введ дополнительное звено BindingSource.
Вот пример в котором одна таблица привязывается к двум DataGidView причем в каждой сетке отображается не вся таблица а только ее часть (в каждой сетке своя). Это достигается путем установки фильтра (свойство BindingSource.Filter).
... << RSDN@Home 1.2.0 alpha rev. 655>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.