【发布时间】:2022-08-14 01:06:26
【问题描述】:
我正在使用 VB.Net winform 和 datagrid。我正在动态创建 datagridview 列并设置数据属性。这是创建数据网格视图的部分代码。
MyDataGrid.ColumnCount = 13
MyDataGrid.Columns(0).Name = \"MRN\"
MyDataGrid.Columns(0).HeaderText = \"MRN\"
MyDataGrid.Columns(0).DataPropertyName = \"med_rec_nbr\"
MyDataGrid.Columns(1).Name = \"LastName\"
MyDataGrid.Columns(1).HeaderText = \"Last Name\"
MyDataGrid.Columns(1).DataPropertyName = \"last_name\"
MyDataGrid.Columns(2).Name = \"FirstName\"
MyDataGrid.Columns(2).HeaderText = \"First Name\"
MyDataGrid.Columns(2).DataPropertyName = \"first_name\"
MyDataGrid.Columns(3).Name = \"DateOfBirth\"
MyDataGrid.Columns(3).HeaderText = \"Date of Birth\"
MyDataGrid.Columns(3).DataPropertyName = \"date_of_birth\"
将数据源设置为来自 SQL Server 源的数据表后,列会发生变化。这是我设置数据源的代码。
Dim dtResults As DataTable
dtResults = GetSQLData(ID)
MyDataGrid.DataSource = dtResults
这是一张之前的照片。
这是加载数据表后
奇怪的是,我有其他 DataGridViews,它们的行为根本不是这样。 为什么列会发生变化?我应该寻找什么?有我应该寻找的财产吗?
-
您是否为此 datagridview 调整了 AutoGenerateColumns?
-
为什么在代码中而不是在设计器中创建列?
-
您的
DataTable中的列及其名称的顺序是什么?它与“之后”图像匹配吗? -
您是否知道在一行上声明一个变量然后在下一行分配给它是不必要的冗长?您可以只使用
Dim dtResults As DataTable = GetSQLData(ID),或者,如果该方法的返回类型是DataTable,则使用Dim dtResults = GetSQLData(ID)。除非您在其他地方使用该变量,否则您甚至可以只使用MyDataGrid.DataSource = GetSQLData(ID)。也就是说,您可能应该在表格和网格之间使用BindingSource。 -
实际上,您创建的动态列在绑定数据表中的数据后不会反映。实际上是什么,数据表中的顺序是什么,该顺序最终绑定。
标签: vb.net datagridview