我有一个Ultragrid
,其列样式为URL。默认情况下,此列是只读的,颜色为灰色。现在我必须使此列可编辑。当它是URL时,我尝试更改列样式。但它不起作用。
//代码:
If (CType(Field.FieldTypeId, ColumnStyle) = ColumnStyle.URL) Then
UltraGridColumn.Style = ColumnStyle.Default
Else
UltraGridColumn.Style = CType(Field.FieldTypeId, ColumnStyle)
End If
我怎样才能做到这一点?
答案 0 :(得分: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);
}