Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据网格绑定问题_C#_.net_Winforms_Datagrid - Fatal编程技术网

C# 数据网格绑定问题

C# 数据网格绑定问题,c#,.net,winforms,datagrid,C#,.net,Winforms,Datagrid,这方面我是新手。我正在尝试从表源填充datagrid。我的代码试图做两件事。 首先,它用表中的列填充dataGrid。然后在网格的末尾添加一个名为“SELECT”的列。此选择为复选框。但是,当我执行这段代码时,它会添加两次“SELECT”列。 我想看一次我做错了什么? private void BankFlow_Load(object sender, EventArgs e) { initMethod(); dataTable = getBankFlowData(globalCo

这方面我是新手。我正在尝试从表源填充datagrid。我的代码试图做两件事。 首先,它用表中的列填充dataGrid。然后在网格的末尾添加一个名为“SELECT”的列。此选择为复选框。但是,当我执行这段代码时,它会添加两次“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);
}

您的问题是databindingcomplete事件发生的次数比您想象的要多。事实上,任何时候一些数据更改都会触发

您需要在databindingcomplete事件之外添加列

编辑


实际上,由于您是数据绑定,您可能需要考虑将列添加到DATATATE中。您可以在将datatable绑定到网格之前执行此操作。本质上,只需创建一个名为select的datacolumn,其类型为boolean,然后将datacolumn添加到datatable。

您的问题是databindingcomplete事件发生的次数比您想象的要多。事实上,任何时候一些数据更改都会触发

您需要在databindingcomplete事件之外添加列

编辑


实际上,由于您是数据绑定,您可能需要考虑将列添加到DATATATE中。您可以在将datatable绑定到网格之前执行此操作。本质上,只需创建一个名为select的数据列,其类型为boolean,然后将该数据列添加到datatable中。

谢谢!你推荐哪个活动?实际上,我添加了一个编辑。在将datatable绑定到网格之前,您真的应该考虑在datatable中添加一列。谢谢Tony!你推荐哪个活动?实际上,我添加了一个编辑。在将数据表绑定到网格之前,您真的应该考虑在数据表中添加一列。