动态格式化BoundField数据类型



我使用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 ONLY应用于其中具有'date'数据类型的列。但是,我没有找到以编程方式确定被绑定列中的数据类型的方法,也没有将此信息传递给控件的任何方法。如我的查询所示,此信息存在于information_schema中,但我不知道如何提取该信息并使用它来动态地设置BoundFields。需要注意的是,我使用的是SqlDataSource

我已经尝试了几乎所有我能想到的可能的解决方案,并结束在这里。

提前感谢您的帮助,非常感谢:)

如果你像这样设置你的复选框列表:

<asp:checkboxlist id="list" runat="server"  
DataTextField="column_name" DataValueField="data_type" DataSourceID="YourDSID" />

您应该能够遍历条目并检查当前条目的值,如下所示:

For Each item As ListItem In chooseColsList.Items
    If item.Selected Then
        Dim bf As New BoundField()
        If StrComp(item.Value,"date") = 0 Then 'Or however datetime is returned
            bf.DataFormatString = "{0:dd-MMM-yyyy}"
            bf.ApplyFormatInEditMode = True
        End If
        bf.DataField = item.Text
        bf.HeaderText = item.Text
        bf.SortExpression = item.Text
        statusReportGrid.Columns.Add(bf)
    End If
Next

相关内容

  • 没有找到相关文章

最新更新