Как отфильтровать ASPxGridView по тексту, который отличается от источника данных - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть DevExpress AspGridView на моей веб-странице, и я использую строку фильтра, которая включена.Проблема, с которой я столкнулся, заключается в том, что я меняю значение отображаемого текста с целого числа на некоторую соответствующую строку в массиве (целое число становится индексом массива), однако строка фильтра не сортируется по новому значению отображаемого текста.При вводе чего-либо в строку фильтра он пытается искать целые числа, а не строки.

Вот код, используемый для изменения текста в ячейке

gv.HtmlDataCellPrepared += (sender, e) =>
        {
            if (e.DataColumn.FieldName == "FOO_STATUS")
            {
                e.Cell.Text = STATUS[int.Parse(e.GetValue("FOO_STATUS").ToString())];
            }
        };

1 Ответ

0 голосов
/ 24 сентября 2018

Укажите текст пользовательских ячеек сетки с помощью события ASPxGridView.CustomColumnDisplayText (вместо ASPxGridView.HtmlDataCellPrepared one) и установите для свойства Settings.FilterMode соответствующего столбца значение DisplayText:

<dx:ASPxGridView ... OnCustomColumnDisplayText="OnCustomColumnDisplayText">
    <Columns>
        ...
        <dx:GridViewDataSpinEditColumn FieldName="FOO_STATUS">
            <Settings FilterMode="DisplayText" />
        </dx:GridViewDataSpinEditColumn>
    </Columns>
</dx:ASPxGridView>

protected void OnCustomColumnDisplayText(object sender, ASPxGridViewColumnDisplayTextEventArgs e) {
    if (e.Column.FieldName == "FOO_STATUS") {
        e.DisplayText = STATUS[int.Parse(e.GetFieldValue("FOO_STATUS").ToString())];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...