【问题标题】:How do I set formatting for a dynamically added column in Infragistics WebDataGrid?如何为 Infragistics WebDataGrid 中动态添加的列设置格式?
【发布时间】:2016-07-28 15:02:12
【问题描述】:

我目前正在使用使用 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 循环。

我看到很多提到 BoundDataFieldDataFormatString,但我似乎无法真正找到如何访问它们。

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

谢谢!

【问题讨论】:

    标签: c# asp.net infragistics webdatagrid


    【解决方案1】:

    我可以通过将Column 转换为BoundDataField 然后从那里使用DataFormatString 来解决这个问题:

            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}";
                }
            }
    

    【讨论】:

      【解决方案2】:

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

      TryCast(.Rows(0).Items.FindItemByKey("MyColumnName").Column, Infragistics.Web.UI.GridControls.BoundDataField).DataFormatString = "{0:G}"
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多