Реклама:

ase (System.Windows.Forms.DataGrid.HitTestType.ParentRows):

sMsgTxt = "Родительская запись"; break;

ase (System.Windows.Forms.DataGrid.HitTestType.RowHeader):

sMsgTxt = "Заголовок строки"; break;

ase (System.Windows.Forms.DataGrid.HitTestType.RowResize):

sMsgTxt = "Изменение ширины строки"; break;

}

MessageBox.Show(sMsgTxt); }

Случай, когда пользователь щелкнул в ячейке DataGrid, показан на рис. 4.60.

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

рис. 4.60

4.2.7. Режим "только-на-чтение"

Внесение изменений в элемент управления DataGrid невозможно в том случае, когда его свойство

public bool Readonly {get; set;}

содержит значение false.

Значение true для свойства Readonly разрешает внесение изменений в ячейки сетки данных DataGrid (и, соответственно, ассоциированный с ним источник данных), если не задан ни один стиль таблиц данных, т. е. свойство TableStyles элемента управления DataGrid ссылается на пустую коллекциею GridTab-leStylesCollection .

Если в DataGrid заданы стили таблиц, то внесение изменений в данные запрещается или разрешается для каждого стиля таблицы (объект DataGridTableStyle). Если свойство ReadOnly стиля таблицы содержит значение false, то нельзя вносить изменения в столбцы и записи таблицы набора данных, ассоциированной с этим стилем. Если же свойство ReadOnly объекта стиля таблицы содержит значение true , то возможность редактирования отдельного столбца внутри стиля таблицы задается свойством ReadOnly стиля этого столбца (объекта DataGridColumnStyle, ассоциированного с конкретным столбцом).

При изменении значения свойства ReadOnly во время выполнения для того объекта, где это свойство изменилось (DataGrid, DataGridTableStyle или Data GridColumnStyle), наступает событие

public event EventHandler ReadOnlyChanged;

4.2.8. Особенности изменения значений в ячейках ВатаОпс!

Любое изменение значения ячейки DataGrid приводит к немедленному внесению изменений в соответствующий столбец строки данных (объект DataRow).

Сказанное верно как для "ручного", так и для программного способа внесения изменений.

Пример. Рассмотрим таблицу Kaf набора данных ndl (рис. 4.61).

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

рис. 4.61

Для того чтобы привести к верхнему регистру значение столбца Nazv во 2-й записи таблицы ^ f, достаточно либо изменить значение, находящееся в соответствующей ячейке DataGrid:

dataGrid1[1, 1] = dataGrid1[1, 1].ToString().ToUpper();

либо внести изменения непосредственно в столбец Nazv 2-й записи таблицы Kaf:

nd1.Kaf.Rows[1П"Nazv"] =

nd1.Kaf.Rows[1]["Nazv"].ToString().ToUpper();

или

nd1.Tables[0].Rows[1][1] =

nd1.Tables[0].Rows[1][1].ToString().ToUpper(); Результат представлен на рис. 4.62.

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

рис 4.62

4.2.9. Особенности добавления записей данных в DataGrid

Пусть в данные, с которыми связан элемент управления DataGrid, разрешено вносить изменения. В сетке данных DataGrid в таком случае последняя запись всегда пуста (рис. 4.63).

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

рис. 4.63

Если поместить курсор на эту запись и ввести в нее значения (рис. 4.64), то мы создадим новую запись, пока еще отсоединенную от источника данных, т. е. не состоящую в коллекции Rows соответствующей таблицы данных и находящуюся в состоянии System.Data.DataRowState.Detached.


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