Поиск способа автофильтрации строк в целочисленном столбце

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

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

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

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";
        }
    }

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

"system.invalidcastexception specified cast is not valid."

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

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

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

пожалуйста, разместите здесь сообщение об исключении и декларацию enum для enmSystemstatus. какой тип данных имеет столбец в таблице данных? int? или varchar?

Mong Zhu 07.09.2018 11:14

отредактировал мой вопрос

cxes 07.09.2018 11:31

"потому что столбец в базе данных является целочисленным столбцом", если столбец является целым числом, то приведение будет допустимым. Убедитесь, что столбец не varchar или ему подобный. вы можете опубликовать все сообщение об исключении?

Mong Zhu 07.09.2018 12:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Компоненты 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

Другие вопросы по теме