Поиск пути для автофильтрации строк в целочисленном столбце - PullRequest
0 голосов
/ 07 сентября 2018

Я использую решетку devexpress для программы управления транспортными средствами и получил столбец, который показывает, помечены ли данные этой строки как удаленные или нет. В базе данных они помечены «1» для активного и «11» для удаленного, поэтому я создал класс enum:

public enum enmSystemstatus
{
    Created = 1, 
    Deleted = 11
}

и это событие, чтобы пометить их словом вместо числа в виде сетки:

private void gridView1_CustomColumnDisplayText(object sender, CustomColumnDisplayTextEventArgs e)
    {
        if (e.Column == colVehicle_Systemstatus && e.Value != null)
        {
            e.DisplayText = (int)e.Value == (int)enmSystemstatus.Created ? "Active" : "Deleted";
        }
    }

Но в программе также должна быть возможность использовать строку автофильтра, но если я введу букву в поле поиска для столбца systemstatus, программа вылетает, потому что невозможно преобразовать эти значения, исключение называется:

"system.invalidcastexception указанное приведение недействительно."

Вероятно, это связано с тем, что столбец в базе данных является целочисленным столбцом, но изменение его на varchar ни на что не влияет

У кого-нибудь есть решение для этого?

заранее спасибо

1 Ответ

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

Компоненты DevExpress (например, GridControl ) поддерживают широкий диапазон атрибутов аннотаций , что позволяет эффективно отображать целочисленные значения из базы данных в конкретные элементы перечисления, а также предоставлять значимые и локализуемые описания для каждого члена перечисления:

public enum DisplayStatus {
    [Display(Name = "ACTIVE")]
    Active= 1,
    [Display(Name = "DELETED")]
    Deleted = 11
}
public class Vehicle_DTO {
    [EnumDataType(typeof(DisplayStatus))]
    [Display(Name = "STATUS")]
    public int Status { get; set; }
}
// ...
gridControl1.DataSource = new List<Vehicle_DTO> {
    new Vehicle_DTO() { Status = 1 },
    new Vehicle_DTO() { Status = 11 },
    new Vehicle_DTO() { Status = 11 },
};

Эта настройка будет применяться ко всем элементам пользовательского интерфейса, включая фильтры без обработки событий и ошибок:
annotation attributes in action

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...