0

我需要格式化一个UltraGrid.

喜欢:使单元格格式化为DateTime.

我已经完成了一个专栏,

   UltraGridColumn.Format = "d"

同样,是否有任何选项可以格式化单个单元格?

UltraGridRow.Cells("abc")= ?

注意:使用 Infragistics 版本 12.1

4

1 回答 1

4

强制 UltraGrid 对同一列中的单元格使用不同编辑器的技巧是基于控件基础结构提供的一组编程对象和模式。

首先要考虑的是InitializeRow事件。当您设置网格的初始 DataSource 或更改基础 DataSource 中的某些内容时,将为每一行调用此事件。e.Reinitialize借助标志,您可以区分这两种情况。如果为假,则将整个数据源应用于网格,如果为真,则通常仅重新初始化行的子集,因为用户已编辑单元格或代码已更改数据源中的值。

要考虑的第二件事是Editor每个 UltraGridCell 或 UltraGridColumn 中存在的属性。它是一个由 UltraGrid 自动构建的对象,允许单元格编辑。UltraGrid 代码根据列的数据类型设置此对象,显然,为列的每个单元格设置相同的编辑器。InitializeLayout您可以在列级别(通常在事件中)或逐个单元格地查看您的格式规则设置自己的编辑器。

让我们尝试一个示例(其中大部分来自 Alhalama 在其评论中建议的示例代码)

假设您有一个只有两列的 DataTable: 第一列被调用CONDITION并包含一个字符串。这个字符串是我的格式要求。
第二列被调用DATEINFO并包含应根据列 CONDITION 中的值进行不同格式设置的日期。
因此,如果CONDITION = 'TEST1'DATEINFO 单元格格式为日/月/年模式,则CONDITION='TEST2'DATEINFO 单元格应格式为小时/分钟/秒。

private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
{
   if (e.ReInitialize == false)
   {
       DefaultEditorOwnerSettings editorSettings;
       DateTimeEditor datetime_editor;
       string condition = e.Row.GetCellValue("Condition").ToString();
       switch (condition)
       {
            case "TEST1":
                editorSettings = new DefaultEditorOwnerSettings()
                editorSettings.DataType = typeof(DateTime);
                editorSettings.MaskInput = "mm/dd/yyyy";
                datetime_editor = new DateTimeEditor(new DefaultEditorOwner(editorSettings));
                e.Row.Cells["DateInfo"].Editor = datetime_editor;
                break;
            case "TEST2":
                editorSettings = new DefaultEditorOwnerSettings()
                editorSettings.DataType = typeof(DateTime);
                editorSettings.MaskInput = "hh:mm:ss";
                datetime_editor = new DateTimeEditor(new DefaultEditorOwner(editorSettings));
                e.Row.Cells["DateInfo"].Editor = datetime_editor;
                break;
       }
   }
}
于 2013-06-14T09:30:56.090 回答