РЕДАКТИРОВАТЬ: как оказалось, сетка не поддерживает несвязанный режим в макете MultiRecordView.
Я попытаюсь задать этот вопрос по-другому, так как мой последний вопрос был отвергнут без комментариев, поэтому я не знаю, против чего возражал автор.
Я много работал с вертикальной сеткой DevExpress в несвязанном режиме в SingleRecordView. Мы используем его во всех наших настольных приложениях, которые требуют ввода большого количества данных. Все формы ввода данных выглядят одинаково, поэтому обучение пользователей минимально. Я думаю, что это отличный контроль.
Однако я не понимаю, как использовать его в несвязанном режиме в макете MultiRecordView. Я даже не могу понять, как заполнить несвязанную сетку данными для нескольких записей. В макете SingleRecord я использую RowsIterator
для перемещения данных из моего объекта данных в памяти в соответствующую строку/ячейку в отдельной записи VerticalGrid.
Но в макете MultiRecordView я не могу понять, как добавить вторую запись, третью запись и т. д. и т. д., и расположить указатель текущей записи так, чтобы RowsIterator
работал со строками правильной записи.
Небольшой фрагмент кода, показывающий, как перемещать указатель текущей записи при добавлении второй и последующих записей в MultiRecordView, был бы очень полезен.
Я пробовал AddNewRecord()
и устанавливал FocusedRecord
, но безуспешно:
for (int i = 0; i < MyTable.Rows.Count; i++)
{
vGridControl1.AddNewRecord();
vGridControl1.FocusedRecord = i;
vGridControl1.RowsIterator.DoOperation(new DataPuller(MyTable.Rows[i]));
}
и вот соответствующий фрагмент из моего объекта DataPuller:
public override void Execute(DevExpress.XtraVerticalGrid.Rows.BaseRow brow)
{
//<snip>
if (brow is DevExpress.XtraVerticalGrid.Rows.EditorRow)
{
string fieldname = brow.Properties.FieldName;
if (table.Columns.Contains(fieldname))
{
brow.Properties.Value = (table[fieldname] == DBNull.Value) ? null : table[fieldname];
}
}
//<snip>
}