Даров, всезнающий 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