为什么winform DataGridView控件在添加自定义列后不显示数据
本文关键字:显示 数据 自定义 添加 winform DataGridView 控件 为什么 | 更新日期: 2023-09-27 18:00:13
我有一个存储过程,它返回10列[列a、列B等]。
基于该表,将创建一个winformListBox,列出这些列。
可以选择ListBox中的项目,然后单击"提交"按钮,打开一个带有DataGridView的新表单。
在新的Forms加载事件中,我放置了遍历列集合并创建DataGridView结构的代码。
我选择的列会显示出来,但数据不会填充到返回的行中。
StoredProcedures.up_Report_Adapter reportAdapter = new StoredProcedures.up_Report_Adapter();
gridCustomData.AutoGenerateColumns = false;
gridCustomData.DataSource = reportAdapter.GetData();
gridCustomData.Columns.Clear();
gridCustomData.Columns.Add(new DataGridViewColumn() { HeaderText = "REPORT_ID", CellTemplate = new DataGridViewTextBoxCell() });
foreach (var item in customReport.lstBoxSelectFields.SelectedItems)
{
gridCustomData.Columns.Add(item.ToString(), item.ToString());
}
gridCustomData.Refresh();
数据显示的行数正确,如果我在gridCustomData中插入一个断点。Refresh(),我可以看到从ListBox中选择的列的完整数据。
那么,如何使数据实际显示在每个定义的行/列中呢?
我已经尝试将创建列的顺序更改为在使用相同结果更新gridCustomData DataSource之前和之后。
我还尝试创建一个BindingSource并将其用作DataGridView的DataSource,然后使BindingSource的DataSource成为已填充的表适配器。数据仍然不可见。
目标是创建一个"自定义查询",但实际上,这只意味着选择数据集中的列。我正在获取存储过程返回的整个DataSet(它本身受参数限制)。
顺便说一句,如果有人知道这类东西的详尽食谱,我很想知道它的标题是什么。MSDN的API数据没有用,因为它使用了人为的例子。
首先设置列DataPropertyName = "REPORT_ID"
的DataPropertyName
gridCustomData.Columns.Add(new DataGridViewColumn() { HeaderText = "REPORT_ID", CellTemplate = new DataGridViewTextBoxCell(), DataPropertyName = "REPORT_ID" });
然后绑定到数据源。gridCustomData.DataSource = reportAdapter.GetData();