Как сделать 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);
    }
Другие вопросы по тегам