Я много просматривал в StackOverflow и по всему интернету, но не мог найти ничего, что могло бы мне помочь. Я помещаю некоторую информацию из базы данных SQL в DataGridView, и добавляю дополнительный столбец с флажками.Проверка CheckBox DatagridView возвращает FormatExceptiion
private void populatedataGrid()
{
String sql = "SELECT pm.Name, pm.telephone, pm.email, pm.validID, comp.name as `Company` FROM `project managers`as pm JOIN `companies`as comp ON pm.Companies_companyID = comp.companyID where pm.Companies_companyID =" + loginID;
MySqlCommand command = new MySqlCommand(sql, dh.Connection);
try
{
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = command;
DataTable dbdataset = new DataTable();
adapter.Fill(dbdataset);
BindingSource bSource = new BindingSource();
// DataGridView1 is a different DataGrid, i am working on DataGridView2
bSource.DataSource = dbdataset;
dataGridView1.DataSource = bSource;
dataGridView2.DataSource = bSource;
//Method for adding the additional column with checkboxes (ill paste the method below)
addCheckBoxColumn();
//I make it so that only the checkboxes can be edited
foreach (DataGridViewColumn dc in dataGridView2.Columns)
{
if (dc.Index.Equals(5))
{
dc.ReadOnly = false;
}
else
{
dc.ReadOnly = true;
}
}
adapter.Update(dbdataset);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
dh.Connection.Close();
}
}
Вот метод для создания колонки с флажками:
private void addCheckBoxColumn()
{
DataGridViewCheckBoxColumn cbCol = new DataGridViewCheckBoxColumn();
cbCol.ValueType = typeof(bool);
cbCol.Name = "Select";
cbCol.HeaderText = "Select";
dataGridView2.Columns.Add(cbCol);
}
И теперь все работает отлично:
Я создал кнопку для целей тестирования, которые я хочу при нажатии, чтобы записать количество строк, на которых отмечен checkbox на label2.
private void button1_Click(object sender, EventArgs e)
{
int counter = 0;
foreach (DataGridViewRow row in dataGridView2.Rows)
{
if (Convert.ToBoolean(row.Cells[5].Value))
{
counter++;
}
}
label2.Text = counter.ToString();
}
Когда я запустить его и нажать кнопку Button1 я получаю следующее исключение:
«Необработанное исключение типа 'System.FormatException' произошло в mscorlib.dll
Дополнительная информация: Струнный не был признан действительным булевым ».
Можете ли вы мне помочь, как исправить это. Я написал подобный поток полчаса назад, когда у меня возникла другая проблема, но он получил Duplicated, поэтому я попытался изменить свой код, и теперь я получаю это.
Укажите фактическое исключение. Включите трассировку стека. – tdbeckett