0

我有Ultragrid一个列样式作为 URL。此列默认为只读,颜色为灰色。现在我必须将此列设为可编辑。当它是 URL 时,我尝试更改列样式。但它不起作用。

//代码:

If (CType(Field.FieldTypeId, ColumnStyle) = ColumnStyle.URL) Then
         UltraGridColumn.Style = ColumnStyle.Default
Else
         UltraGridColumn.Style = CType(Field.FieldTypeId, ColumnStyle)
End If

我怎样才能做到这一点?

4

1 回答 1

1

使 UltraGridColumn 可编辑取决于许多属性。

首先,UltraGrid 应该允许更新。这是由属性控制的

grid.DisplayLayout.Override.AllowUpdate = DefaultableBoolean.True

使用此属性,您可以更新整个网格(您可以在 Bands 级别应用相同的属性来限制它)。但是,这不足以启用编辑,因为您需要设置(对于个人列)另外两个属性

column.CellActivation = Activation.AllowEdit
column.CellClickAction = CellClickAction.Edit

但是,我对 URL 样式进行了一些研究。似乎这种样式为您的列分配了一个FormattedLinkEditor不允许以任何方式编辑链接文本的对象(它被视为标签)。所以我建议,除非来自 Infragistics 的人有更好的建议,否则使用普通的编辑列。(当然,如果您的意图只是编辑链接文本)

这个简短的示例捕获了对单元格的单击并尝试启动编辑会话,但没有成功

    private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
    {
        UltraGridColumn cc = e.Layout.Bands[0].Columns[0];
        cc.Style = Infragistics.Win.UltraWinGrid.ColumnStyle.URL;
        (cc.Editor as FormattedLinkEditor).LinkClicked += Form1_LinkClicked;
        cc.CellActivation = Activation.AllowEdit;
        cc.CellClickAction = CellClickAction.EditAndSelectText;
        cc.Width = 500;
    }

    void Form1_LinkClicked(object sender, Infragistics.Win.FormattedLinkLabel.LinkClickedEventArgs e)
    {
        e.OpenLink = false;
        ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
    }
于 2013-07-30T07:35:30.067 回答