Когда я создаю DataGridView, я связываю его с DataTable, а затем сразу устанавливаю, чтобы первые две строки зависали. Строки не замерзают. Однако, если я обрабатываю нажатие кнопки и устанавливаю, чтобы строки зависали при нажатии этой кнопки, строки успешно замораживаются. Как же я могу заморозить строки сразу после сопоставления таблицы?
Вот код:
DataTable dataTable = new DataTable();
// Just add a bunch of columns
for (int i = 0; i < 15; i++)
{
dataTable.Columns.Add("Col" + i.ToString(), typeof
(string));
}
// Add a bunch of rows to the DataTable, with some dummy
values
for (int i = 0; i < 100; i++)
{
DataRow row = dataTable.NewRow();
for (int j = 0; j < 15; j++)
{
row["Col" + j.ToString()] = "Val" + i.ToString() +
"-" + j.ToString();
}
dataTable.Rows.Add(row);
}
gridView.DataSource = dataTable;
gridView.Rows[1].Frozen = true;
Это не будет работать. Строки не заморожены. Однако, если я придерживаюсь строки gridView.Rows[1].Frozen = true;
в обработчике событий кнопки, он работает. Как я могу это сделать, не требуя запуска триггера события от пользователя? Я вижу два решения:
Bind данные таким образом:
for (int i = 0; i < 15; i++)
{
DataGridViewTextBoxColumn c = new DataGridViewTextBoxColumn();
c.Name = "Col" + i.ToString();
gridView.Columns.Add(c);
}
gridView.Rows.Add(100);
for (int i = 0; i < 100; i++)
for (int j = 0; j < 15; j++)
gridView.Rows[i].Cells[j].Value = "Val" + i.ToString() + "-" + j.ToString();
gridView.Rows[0].Frozen = true;
Выберите замороженные строки в этом случае:
private void gridView_DataBindingComplete(object sender,
DataGridViewBindingCompleteEventArgs e)
{
FrozeFirstRow();
}
'строки [0] = .freeze true' означает замораживание ячейки, нет? – leppie
Я предполагаю, что он имел в виду строки [0] .freeze. Я не думаю, что строка [0] .freeze будет компилироваться .. – Niclas
'.Rows [0] .Frozen = true;' должен работать! ! – V4Vendetta