2010-10-08 144 views
1

我是新手。我正在嘗試從表格源填充數據網格。我的代碼試圖做兩件事。 首先它使用表中的列填充dataGrid。然後在網格的最後添加一個名爲「SELECT」的列。這個選擇是CheckBox。但是,當我執行此代碼時,它將兩次添加「SELECT」列。 我想看一次。 我在做什麼錯?Datagrid綁定問題

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); 
} 

回答

4

你的問題是,databindingcomplete事件發生更多然後你的想法。事實上,任何時候一些數據的改變都會觸發。

您需要添加databindingcomplete事件之外的列。

編輯

其實既然你是數據綁定,你可能要考慮將列到你的數據表。在將數據表綁定到網格之前,您會這樣做。基本上,只需創建一個名爲select的datacolumn,它具有布爾類型,然後將datacolumn添加到數據表。

+0

謝謝Tony!你推薦哪個活動? – abhi 2010-10-08 18:47:32

+0

其實,我添加了一個編輯。在將其綁定到網格之前,您應該考慮在數據表中添加一列。 – 2010-10-08 18:54:23