2012-03-31 73 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

相关问题