不能在数据绑定的 DataGridView 控件上设置 ColumnCount 属性。 C#
ColumnCount property cannot be set on a data-bound DataGridView control. c#
在我的表单中,我有数据网格视图,我 select 使用以下方法将数据放入数据网格视图
存储过程:
create proc [dbo].[GET_CULTURE_RESULT_DETAILS]
@ORDER_ID int
as
select LAB_MICRO_RESULTS_DETAILS.[organism_id] as 'Org.Id' , organism_desc as 'Organism Name'
,LAB_MICRO_RESULTS_DETAILS.[Antibiotic_id] as 'Ant.Id', Antibiotic_Name as 'Antibiotic Name'
,LAB_MICRO_RESULTS_DETAILS.[sensitivityId] as 'Sens.Id', Sensitivity_desc as 'Sensitivity Name'
from LAB_MICRO_RESULTS_DETAILS
inner join lab_organisms on LAB_MICRO_RESULTS_DETAILS.organism_id = lab_organisms.organism_id
inner join lab_antibiotics on LAB_MICRO_RESULTS_DETAILS.Antibiotic_id = lab_antibiotics.Antibiotic_id
inner join Lab_Sensitivity on LAB_MICRO_RESULTS_DETAILS.sensitivityId = Lab_Sensitivity.sensitivityId
where LAB_MICRO_RESULTS_DETAILS.order_id = @ORDER_ID
然后当 select 使用按键事件填充订单号 datagridview 时,代码如下:
private void txtOrder_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter && txtOrder.Text != string.Empty)
{
dgvcultures.DataSource = micro.GET_CULTURE_RESULT_DETAILS(Convert.ToInt32(txtOrder.Text));
txtPCfile.Focus();
}
}
最后,当我尝试使用以下代码将新行添加到数据网格视图时出现错误:
private void btnAdd_Click(object sender, EventArgs e)
{
if (dgvcultures.Columns.Count >= 0)
{
dgvcultures.ColumnCount = 6;
dgvcultures.Columns[0].Name = "Org.Id";
dgvcultures.Columns[1].Name = "Organism Name";
dgvcultures.Columns[2].Name = "Ant.Id";
dgvcultures.Columns[3].Name = "Antibiotic Name";
dgvcultures.Columns[4].Name = "Sens.Id";
dgvcultures.Columns[5].Name = "Sensitivity Name";
dgvcultures.Rows.Add(comboOrganism.SelectedValue.ToString(), comboOrganism.Text,
comboAntibiotics.SelectedValue.ToString(), comboAntibiotics.Text,
comboSensitivity.SelectedValue.ToString(), comboSensitivity.Text);
// comboGrowth.SelectedValue.ToString(),comboGrowth.Text);
}
}
当单击添加按钮并尝试插入新行时,出现此错误:
ColumnCount property cannot be set on a data-bound DataGridView control. c#
我检查了该站点中的解决方案,他们说您必须在插入新行之前清除 datagridview 我试过它清除存储过程中填充的数据,我不需要清除 datagridview,我需要保留数据并在不清除当前数据的情况下添加新行:
//Clear the binding.
dgvcultures.DataSource = null;
此命令将删除 datagridview 中的行,但我需要保留行。
请问如何解决这个错误。
据我所知,网格 DataSource
看起来像 DataTable
,其中包含以下列…
Org.Id、生物名称、Ant.Id、抗生素名称、Sens.Id 和敏感性名称。
我从从数据库获取 table 的第一段代码中假设了这一点。
如果这个DataTable
作为一个DataSource
到网格,那么在按钮点击事件中,就没有必要“重新创建”列了。 table 中已经存在这些列。代码只需要将行添加到DataTable.
不清楚列“类型”是否都是strings
并且代码可能需要转换一些值,否则按钮点击事件中的代码可能看起来像……
DataTable gridDT = (DataTable)dgvcultures.DataSource;
gridDT.Rows.Add(comboOrganism.SelectedValue.ToString(),
comboOrganism.Text,
comboAntibiotics.SelectedValue.ToString(),
comboAntibiotics.Text,
comboSensitivity.SelectedValue.ToString(),
comboSensitivity.Text);
最后,您应该考虑使用 BindingSource
。它可能会让事情变得更容易。
我希望这是有道理的。
在我的表单中,我有数据网格视图,我 select 使用以下方法将数据放入数据网格视图 存储过程:
create proc [dbo].[GET_CULTURE_RESULT_DETAILS]
@ORDER_ID int
as
select LAB_MICRO_RESULTS_DETAILS.[organism_id] as 'Org.Id' , organism_desc as 'Organism Name'
,LAB_MICRO_RESULTS_DETAILS.[Antibiotic_id] as 'Ant.Id', Antibiotic_Name as 'Antibiotic Name'
,LAB_MICRO_RESULTS_DETAILS.[sensitivityId] as 'Sens.Id', Sensitivity_desc as 'Sensitivity Name'
from LAB_MICRO_RESULTS_DETAILS
inner join lab_organisms on LAB_MICRO_RESULTS_DETAILS.organism_id = lab_organisms.organism_id
inner join lab_antibiotics on LAB_MICRO_RESULTS_DETAILS.Antibiotic_id = lab_antibiotics.Antibiotic_id
inner join Lab_Sensitivity on LAB_MICRO_RESULTS_DETAILS.sensitivityId = Lab_Sensitivity.sensitivityId
where LAB_MICRO_RESULTS_DETAILS.order_id = @ORDER_ID
然后当 select 使用按键事件填充订单号 datagridview 时,代码如下:
private void txtOrder_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter && txtOrder.Text != string.Empty)
{
dgvcultures.DataSource = micro.GET_CULTURE_RESULT_DETAILS(Convert.ToInt32(txtOrder.Text));
txtPCfile.Focus();
}
}
最后,当我尝试使用以下代码将新行添加到数据网格视图时出现错误:
private void btnAdd_Click(object sender, EventArgs e)
{
if (dgvcultures.Columns.Count >= 0)
{
dgvcultures.ColumnCount = 6;
dgvcultures.Columns[0].Name = "Org.Id";
dgvcultures.Columns[1].Name = "Organism Name";
dgvcultures.Columns[2].Name = "Ant.Id";
dgvcultures.Columns[3].Name = "Antibiotic Name";
dgvcultures.Columns[4].Name = "Sens.Id";
dgvcultures.Columns[5].Name = "Sensitivity Name";
dgvcultures.Rows.Add(comboOrganism.SelectedValue.ToString(), comboOrganism.Text,
comboAntibiotics.SelectedValue.ToString(), comboAntibiotics.Text,
comboSensitivity.SelectedValue.ToString(), comboSensitivity.Text);
// comboGrowth.SelectedValue.ToString(),comboGrowth.Text);
}
}
当单击添加按钮并尝试插入新行时,出现此错误:
ColumnCount property cannot be set on a data-bound DataGridView control. c#
我检查了该站点中的解决方案,他们说您必须在插入新行之前清除 datagridview 我试过它清除存储过程中填充的数据,我不需要清除 datagridview,我需要保留数据并在不清除当前数据的情况下添加新行:
//Clear the binding.
dgvcultures.DataSource = null;
此命令将删除 datagridview 中的行,但我需要保留行。
请问如何解决这个错误。
据我所知,网格 DataSource
看起来像 DataTable
,其中包含以下列…
Org.Id、生物名称、Ant.Id、抗生素名称、Sens.Id 和敏感性名称。
我从从数据库获取 table 的第一段代码中假设了这一点。
如果这个DataTable
作为一个DataSource
到网格,那么在按钮点击事件中,就没有必要“重新创建”列了。 table 中已经存在这些列。代码只需要将行添加到DataTable.
不清楚列“类型”是否都是strings
并且代码可能需要转换一些值,否则按钮点击事件中的代码可能看起来像……
DataTable gridDT = (DataTable)dgvcultures.DataSource;
gridDT.Rows.Add(comboOrganism.SelectedValue.ToString(),
comboOrganism.Text,
comboAntibiotics.SelectedValue.ToString(),
comboAntibiotics.Text,
comboSensitivity.SelectedValue.ToString(),
comboSensitivity.Text);
最后,您应该考虑使用 BindingSource
。它可能会让事情变得更容易。
我希望这是有道理的。