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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.