2012-03-31 74 views
0

我有一個DataTable,我手動填充綁定到DataGridView進行顯示。當我手動添加一行到DataTable時,它不會顯示在DataGridView中。列在那裏,但現在行。DataGridView綁定到DataTable不顯示行

任何想法?

((DataTable)((BindingSource)_dgv.DataSource)).Rows.Count // 2 
_dgv.Rows.Count // 0 
_dgv.Columns[0].IsDataBound // true, for all columns 

//code that adds rows 
DataRow productRow = dataTable.NewRow(); 
SetRowValues(productRow); 
dataTable.Rows.Add(productRow); 

//code to bind DataTable to DGV 
BindingSource bindingSrc = new BindingSource(); 
bindingSrc.DataSource = dataTable; 
DataGridView dgv = CreateDataGridView(); 
dgv.DataSource = bindingSrc; 

private DataGridView CreateDataGridView() 
{ 
    DataGridView dgv = new DataGridView(); 
    dgv.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top); 
    dgv.ShowEditingIcon = false; 
    dgv.RowHeadersVisible = false; 
    dgv.ReadOnly = true; 
    dgv.AllowUserToAddRows = false; 
    dgv.ColumnHeadersVisible = true; 
    dgv.CellDoubleClick += new DataGridViewCellEventHandler(OnDGVCellDoubleClick); 
    dgv.SelectionChanged += new EventHandler(OnDGVSelectionChanged); 
    dgv.AutoGenerateColumns = false; 
    List<OpportunityProductField> configFields = GetConfigFields(); 
    List<DataGridViewColumn> columns = CreateDGVColumns(configFields); 
    columns.Sort(delegate(DataGridViewColumn c1, DataGridViewColumn c2) { return c1.DisplayIndex.CompareTo(c2.DisplayIndex); }); 
    columns.ForEach(delegate(DataGridViewColumn c) { dgv.Columns.Add(c); }); 
    return dgv; 
} 

回答

0

不應該爲綁定的代碼看起來像這樣嗎?

BindingSource bindingSrc = new BindingSource(); 
bindingSrc.DataSource = dataTable 
DataGridView dgv = CreateDataGridView(); 
dgv.DataSource = bindingSrc; 
+0

是的,你是對的。我錯誤地複製了代碼。發佈更新。 – Trent 2012-03-31 23:43:36

相關問題