#c# #winforms #devexpress
#c# #winforms #devexpress
Вопрос:
Я работаю над проектом Windows Forms, и у меня есть некоторые данные в a XtraGrid.GridControl
с этими столбцами:
ID
, Description
, To Process
Я загружаю эти данные из базы данных, и столбец To Process
содержит boolean
поле.
Я хотел бы иметь вместо текущего 1
и 0
значений флажок, который будет установлен, если значение равно 1
, и снят, если значение равно 0
.
Как я могу добиться этого с Dev Express 16
помощью?
Это то, что я делал до сих пор:
- импортировал a
DevExpress.XtraGrid.GridControl
в мою формуDesign
; - добавлены три столбца
ID
Description
иTo Process
; -
заполнил
GridControl
DataSource
исходный код с помощью этого метода:private void LoadTableData() { // initialization gcTable.DataSource = null; string query = " SELECT id, description, to_process FROM test_table "; DataTable dt = Utils.ExecuteQuery(query); if (dt != null amp;amp; dt.Rows.Count > 0) { gcTable.DataSource = dt; } }
Как и сейчас, моя таблица заполнена, но в 1
0
столбце указаны значения и To Process
.
Ответ №1:
Присвойте RepositoryItemCheckEdit свойству ColumnEdit вашего To Process
столбца и при необходимости установите его свойства ValueChecked и ValueUnchecked. Дополнительная информация здесь.
Комментарии:
1. Как разрешить множественный выбор? Спасибо!
2. Я понял. Я изменил
ValueChecked
иValueUnchecked
сtrue
иfalse
на1
и0
Ответ №2:
Вы можете использовать gridView1_CustomRowCellEdit
событие для изменения репозитория для ячейки в виде сетки. Если столбец данных имеет тип bool, ячейки управления сеткой будут флажками.
dt.Columns["to_process"].DataType = typeof(bool);
Вот пример кода для события CustomRowCellEdit.
void gridView1_CustomRowCellEdit(object sender, DevExpress.XtraGrid.Views.Grid.CustomRowCellEditEventArgs e)
{
if (e.Column.FieldName == "to_process")
{
DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit repChk = new DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit();
e.RepositoryItem = repChk;
}
}