[英]DataGridView bound to DataTable not displaying rows
I have a DataTable that I am manually populating bound to a DataGridView for display. 我有一个要手动填充的DataTable,绑定到一个DataGridView进行显示。 When I manually add a row to the DataTable, it isn't showing up in the DataGridView.
当我手动向DataTable添加一行时,该行未显示在DataGridView中。 The columns are there, but now rows.
列在那里,但现在是行。
Any ideas? 有任何想法吗?
((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;
}
Shouldn't your code for the binding look like this? 您的绑定代码不应该是这样吗?
BindingSource bindingSrc = new BindingSource();
bindingSrc.DataSource = dataTable
DataGridView dgv = CreateDataGridView();
dgv.DataSource = bindingSrc;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.