WinForms dev express привязывает столбец true / false с помощью флажка

#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;
        }
    }