我正在使用 CheckBoxList 来定义在 GridView 中显示哪些列。我使用类似的查询填充 CheckBoxList
select column_name, data_type from information_schema.columns
where table_name = 'myTable'
在用户选择了他们希望显示的列(其中包含各种数据类型)后,他们按下一个按钮,下面的 VB 代码片段将生成 GridView。
For Each item As ListItem In chooseColsList.Items
If item.Selected Then
Dim bf As New BoundField()
'PRODUCES BUGGY RESULTS BECAUSE APPLIED TO ALL BoundFields
bf.DataFormatString = "{0:dd-MMM-yyyy}"
bf.ApplyFormatInEditMode = True
bf.DataField = item.Value
bf.HeaderText = item.Value
bf.SortExpression = item.Value
statusReportGrid.Columns.Add(bf)
End If
Next
我想要做的是将 DataFormatString 仅应用于其中具有“日期”数据类型的列。但是,我发现无法以编程方式确定要绑定的列中数据的类型,也无法将此信息传递给控件。此信息存在于 information_schema 中,如我的查询中所示,但我不知道如何将其提取出来并使用它来动态设置我的 BoundFields。请务必注意,我使用的是SqlDataSource。
我已经尝试了我能想到的几乎所有可能的解决方案并最终在这里。
提前感谢您的帮助,非常感谢:)