Telerik Radgridview CellFormatting не является стабильным - PullRequest
0 голосов
/ 24 марта 2019

У меня есть радгридвью со многими столбцами (горизонтальная полоса прокрутки активирована).
У меня есть CommandColumn в моей сетке, и я хочу отформатировать его так:

private void rad_grd_Requests_CellFormatting(object sender, CellFormattingEventArgs e)
    {
        if (e.CellElement.ColumnInfo is GridViewCommandColumn)
        {
            RadButtonElement button = (RadButtonElement)e.CellElement.Children[0];
            if (e.CellElement.RowInfo.Cells["Admin_Action"].Value.ToString() == "Hold")
            {
                button.Text = "Done";
            }
            else
            {
                button.Text = "Done";
                button.Visibility = ElementVisibility.Hidden;
            }
        }
    }

Когда программа запускается, все в порядке.
Но когда я использую горизонтальную полосу прокрутки сетки, иногда все кнопки в CommandColumn становятся невидимыми (многократный запуск CellFormatting ())
Почему CellFormatting () не является стабильным и как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Благодаря виртуализации пользовательского интерфейса в RadGridView элементы ячеек создаются только для видимых в данный момент ячеек и используются повторно во время таких операций, как прокрутка, фильтрация, группировка и т. Д.Чтобы предотвратить применение форматирования к элементам ячейки других столбцов (из-за повторного использования ячейки), все настройки должны быть сброшены для остальных элементов ячейки.

Пожалуйста, обратитесь к следующей статье справки, демонстрирующей, как правильно настроить ячейки и сбросить стиль: https://docs.telerik.com/devtools/winforms/controls/gridview/cells/formatting-cells

Надеюсь, эта информация поможет.

0 голосов
/ 25 марта 2019

Вот ответ:

   RadButtonElement button = (RadButtonElement)e.CellElement.Children[0];
    if (e.CellElement.RowInfo.Cells["Admin_Action"].Value.ToString() == "Hold")
    {
        button.Text = "Done";
        button.Visibility = ElementVisibility.Visible;
    }
    else
    {
        button.Text = "Done";
        button.Visibility = ElementVisibility.Hidden;
    }

Добавьте button.Visibility = ElementVisibility.Visible; к вашим кодам.

...