Как сделать URL-адрес стиля UltragridColumn доступным для редактирования
У меня есть Ultragrid
который имеет стиль столбца как URL. Этот столбец по умолчанию доступен только для чтения и имеет серый цвет. Теперь я должен сделать этот столбец редактируемым. Я пытался изменить стиль столбца, когда это URL. Но это не работает.
//Код:
If (CType(Field.FieldTypeId, ColumnStyle) = ColumnStyle.URL) Then
UltraGridColumn.Style = ColumnStyle.Default
Else
UltraGridColumn.Style = CType(Field.FieldTypeId, ColumnStyle)
End If
Как мне этого добиться?
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);
}