2

Я имею эту таблицу в базе данных:Использование DataGridView CheckBox столбца для столбца строки данных

applicant | module | date | approvation | 
    xxxx   xxxx  xxxx  xxxxxxx 
    yyyy   yyyy  yyyy  yyyyyyy 
    tttt   tttt  tttt  ttttttt 

У меня есть эта таблица дб. После запроса я назначаю DataTable к моему DataGridView.DataSource:

QueryAssist qa = new QueryAssist(); 
DataTable dt = new DataTable(); 
dt = qa.runQuery('myquery'); 

dgvApprovazione.DataSource = dt; 
dgvApprovazione.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells); 

// modify, transform 2nd column in cellLink 
foreach (DataGridViewRow row in dgvApprovazione.Rows) 
{ 
    row.Cells[1] = new DataGridViewLinkCell(); 
} 

Теперь я хочу, чтобы преобразовать столбец approvation, который является строкой approved или not approved и показать флажок вместо этого.

если значение этой ячейки approved флажок установлен и не изменен (onlyread).

что-то подобное:

foreach (DataGridViewRow row in dgvApprovazione.Rows) 
{ 
    if (row.Cells[3].Value.ToString().Equals("APPROVED")) 
    { 
     row.Cells[3] = new DataGridViewCheckBoxCell(); 
    } 
} 

У меня есть проблема, чтобы реализовать ... помочь мне.

Возможно ли это? Как?

наложение нового:

Я хочу, чтобы изменить столбец того, что значение содержит текстовый/строка (санкционирован или нет) в флажком (зарегистрированный или незарегистрированный)

Извините за плохой английский ..

Хорошие альтернативы?

+0

Изменение типа поля Approvation для boolean в вашей таблице базы данных будет выполнять эту работу. – ehh

ответ

2

Для хранения да/нет или вкл/выкл или истинных/ложных значений в базе данных, то лучше использовать bit тип данных в SQL Server, но с использованием DataGridViewCheckBoxColumn вы можете показать и редактировать также строку столбец, установив TrueValue и FalseValue.

В приведенном ниже примере я должен вас обнуляемый столбец в базе данных, которую нужно хранить значения в APPROVED или NOTAPPROVED как nvarchar(50) и вы должны изменить эти значения с помощью DataGridViewCheckBoxColumn.

Чтобы сделать это, вы должны добавить свой столбец таким образом, с помощью дизайнера или код:

var column1 = new DataGridViewCheckBoxColumn(); 
column1.Name = "column1";       //Name of column 
column1.HeaderText= "Is Approved";    //Title of column 
column1.DataPropertyName = "approvation";   //Name of filed in database 
column1.TrueValue = "APPROVED";     //True value 
column1.FalseValue = "NOTAPPROVED";    //False Value 
this.dataGridView1.Columns.Add(column1); 

Таким образом, вы показываете утверждены или не утверждены в качестве флажков, а также вы можете изменить эти значения, используя флажок ,

Если вам не нужно редактировать их и показывать только их, вы можете установить свойство только для чтения столбца true.

+1

Сообщение действительно полезно использовать 'DataGridViewCheckBoxColumn' для строковых столбцов и кажется, что оно отвечает на ваш вопрос. Было бы здорово, если бы вы голосовали и принимали ответ :) –

+0

в начале, моя идея была скользящей (foreach) всей колонке «одобрена» или «не утверждена» (строка) ... затем создайте новый столбец (столбец флажка), который будет добавлен в datagridview, и если значение «одобрено» ... флажок установлен, еще не отмечен флажок. и только теперь показывают datagridview. Я решил с объявлением полей yes/no в db :) .. Но решение u хорошо .. – rul3z

+1

Лучше использовать бит-поле, как сказано в ответе.Но для случаев, которые пользователь должен отредактировать (показать) строковый столбец, используя флажок, решение может быть полезно :) –

Смежные вопросы