1

我目前正在使用使用 Infragistics WebDataGrid 控件编写的实用程序。该工具允许用户从下拉列表中选择一个表,此时它运行存储过程以从 SQL Server 获取数据,然后将其绑定到网格。

一切都有一个默认格式,在这种情况下,日期时间列就是MM/DD/YYYY这样。请求至少包含这些列之一的时间分量。

经过大量搜索后,我尝试将代码添加到_InitializeRow网格的事件处理程序中,但我似乎无法完全正确。这是我想出的:

if (e.Row.Index == 0)
{
    foreach (GridRecordItem field in e.Row.Items)
    {
        if (field.Column.Key == "InsertedOnCC")
            field.Column.FormatValue = "{0:g}";
    }
}

FormatValue这给了我一个无法分配值的错误,因为它是一个方法组。

这是从多个来源拼凑而成的,但没有一个完全符合我的要求。例如,一段示例代码总是假设有问题的列是第一列,所以我不得不添加foreach循环。

我已经看到很多提及BoundDataFieldand DataFormatString,但我似乎无法真正找到如何访问它们。

注意:我实际上是一名 SQL 开发人员,而不是 C# 开发人员,所以请保持温和。:)

谢谢!

4

2 回答 2

2

我可以通过将 a 转换Column为 aBoundDataField然后使用DataFormatStringfrom 来解决这个问题:

        if (e.Row.Index == 0)
        {
            foreach (GridRecordItem gri in e.Row.Items)
            {
                BoundDataField field = gri.Column as BoundDataField;

                if (field.Key == "InsertedOnCC")
                    field.DataFormatString = "{0:g}";
            }
        }
于 2016-07-28T18:20:40.350 回答
0

使用上面的信息,我能够让它工作。它更干净。它不需要循环:

TryCast(.Rows(0).Items.FindItemByKey("MyColumnName").Column, Infragistics.Web.UI.GridControls.BoundDataField).DataFormatString = "{0:G}"
于 2021-11-25T13:32:54.480 回答