我是新来的。我试图从表源填充数据网格。我的代码试图做两件事。 首先,它使用表中的列填充dataGrid。然后它在网格的末尾添加一个名为“SELECT”的列。这个选择是CheckBox。但是,当我执行此代码时,它会将“SELECT”列添加两次。 我想看一次。 我做错了什么?
private void BankFlow_Load(object sender, EventArgs e)
{
initMethod();
dataTable = getBankFlowData(globalConnection);
dataGridView1.DataSource = dataTable;
}
private static DataTable getBankFlowData(OracleConnection oc)
{
DataTable dt = new System.Data.DataTable();
try
{
OracleCommand od = oc.CreateCommand();
od.CommandText = "SELECT * FROM BANK_FLOW_SOURCE";
od.CommandType = System.Data.CommandType.Text;
OracleDataAdapter adapter = new OracleDataAdapter(od);
adapter.Fill(dt);
}
catch (Exception)
{
}
return dt;
}
private static void initMethod()
{
targetSystem = ConfigurationManager.ConnectionStrings["prototype"].ConnectionString.ToString();
Console.WriteLine("Target : {0}", targetSystem);
sourceSystem = ConfigurationManager.ConnectionStrings["qlprod8"].ConnectionString.ToString();
Console.WriteLine("Source : {0}", sourceSystem);
globalConnection.ConnectionString = sourceSystem;
globalConnection.Open();
}
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
col.HeaderText = "SELECT";
col.ReadOnly = false;
col.DefaultCellStyle.BackColor = Color.Beige;
dataGridView1.Columns.Add(col);
}
答案 0 :(得分:4)
你的问题是数据绑定完成事件发生的时间比你想象的要多。实际上,只要有一些数据发生变化,它就会触发。
您需要在数据绑定完成事件之外添加列。
修改强>
实际上,由于您是数据绑定,因此您可能需要考虑将列添加到数据表中。您可以在将数据表绑定到网格之前执行此操作。基本上,只需创建一个名为select的数据列,其类型为boolean,然后将datacolumn添加到数据表中。