Я использую 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 на что-то не влияет.
Есть ли у кого-нибудь решение для этого?
заранее спасибо
отредактировал мой вопрос
"потому что столбец в базе данных является целочисленным столбцом", если столбец является целым числом, то приведение будет допустимым. Убедитесь, что столбец не varchar
или ему подобный. вы можете опубликовать все сообщение об исключении?
Компоненты 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 },
};
Эта настройка будет применена ко всем элементам пользовательского интерфейса, включая фильтры без обработки событий и ошибки:
пожалуйста, разместите здесь сообщение об исключении и декларацию
enum
дляenmSystemstatus
. какой тип данных имеет столбец в таблице данных?int
? илиvarchar
?