Реклама:

(System.Windows.Forms.CurrencyManager)this.BindingContext[nd1,

dataGrid1.DataMember];

//---запись dataGrid связана со строкой (тип DataRowView) некоего

//--просмотра

DataRowView drv = (DataRowView)cm.Current;

//---от строки просмотра перейдем к связанной с ней строке

//---источника данных

DataRow dr = drv.Row;

//---индекс текущей (добавляемой) строки в dataGrid

int ndx = dataGrid1.CurrentRowIndex;

//---глядим: а не пусты ли 0-й и 3-й столбцы текущей записи dataGrid?

bool Pusto = (dataGrid1[ndx, 3].ToString() == "");

//---если строка отсоединенная и нужные столбцы пусты, заполняем их

//---стартовыми значениями

if ((dr.RowState == System.Data.DataRowState.Detached) && Pusto) {

dataGrid1[ndx, 0] = 999; dataGrid1[ndx, 3] = "Общий";

} }

Позиционируем указатель dataGrid1 на последнюю, пустую запись. Увидим, что стартовые значения появились в нужных ячейках добавляемой строки dataGrid1 (рис. 4.68).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис 4.68

Стартовые значения столбцов можно задавать не в ячейках DataGrid, а в записи (объект DataRowView) просмотра, ассоциированно связанного с DataGrid:

if ((dr.RowState == System.Data.DataRowState.Detached) && Pusto) {

drv["KK"] = 999; drv["Fakultet"] = "Общий";

}

или в самой добавляемой записи (объект DataRow):

if ((dr.RowState == System.Data.DataRowState.Detached) && Pusto)

{

dr["KK"] = 999; dr["Fakultet"] = "Общий";

}

4.2.11. Выбор вариантов значений в ячейке ЭгиаСпс!

Некоторые столбцы таблицы базы данных могут содержать значение из ограниченного подмножества. Например: пол - {мужской, женский}; гражданство - {гражданин РФ, негражданин, двойное гражданство} и пр.

Чтобы помочь пользователю выбрать одно из разрешенных для данного столбца значений, в DataGrid, как правило, используют элемент управления ComboBox, совмещая его с границами редактируемой ячейки (рис. 4.69).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.69

Для этой цели в форме при создании приложения размещают два элемента управления - DataGrid и ComboBox. Свойство DropDownStyle элемента управления ComboBox устанавливают в значение DropDownList. Список значений элемента управления ComboBox (свойство Items) формируют либо на этапе создания приложения, либо программно на этапе выполнения.

При перемещении по ячейкам DataGrid в обработчике события CurrentCell Changed последнего отслеживают, не принадлежит ли текущая ячейка сетки данных к тому столбцу, значения которого нужно выбирать из списка. Если не принадлежит, ComboBox со списком значений девизуализируют, а если принадлежит, наоборот, визуализируют:

private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)

{

int nCl = dataGrid1.CurrentCell.ColumnNumber; if (nCl == 3)

{

MycomboBox.Visible = true;

}

else

{

MycomboBox.Visible = false;

}

}

Однако, если столбец - тот самый, значения которого должны выбираться из списка, то ComboBox мало визуализировать, нужно еще совместить его границы с границами текущей ячейки DataGrid. Для этого следует обратиться к свойству Rectangle элемента управления DataGrid: public Rectangle GetCurrentCellBounds();


⇐ Предыдущая страница| |Следующая страница ⇒