Отредактированная ячейка была сброшена после изменения фокуса в представлении сетки с использованием devexpress 15.2 c#

я новичок в devexpress. когда я добавляю новую строку и заполняю какое-то значение в одной ячейке, затем я фокусируюсь на другой ячейке в той же строке, я потерял значение в этой ячейке. Это мой код (имя столбца в gridview совпадает с столбцом в Datatable dtGroupRole)

FrmUser.cs
...
adminGroupRoles = AdminGroupRoles.GetAllGroupRoles().ToList();
dtGroupRole = GlobalVars.ToDataTable<AdminGroupRoles>(adminGroupRoles);
grdGroupRoles.DataSource = adminGroupRoles;


AdminGroupRoles.cs
public class AdminGroupRoles
{
    public int GroupId { get; set; }
    public string GroupName { get; set; }

    public static List<AdminGroupRoles> GetAllGroupRoles()
    {
        return AdminGroupRoles.Inst.ExeStoreToList("sp_AdminUsers_GetAllGroupRoles");
    }
}

Редактируемая ячейка была сброшена:

Редактируемая ячейка была сброшена

Спасибо всем :)


person Alexander_bkhn    schedule 16.03.2016    source источник


Ответы (2)


Я вижу, что вы назначаете adminGroupRoles в качестве источника сетки. Это Список. Чтобы сетка могла добавлять новые строки, источником данных должен быть IBindingList. adminGroupRoles не реализует это. Насколько я понимаю, dtGroupRole — это DataTable, сконвертированный из adminGroupRoles. Итак, вам нужно использовать в качестве источника данных сетки:

adminGroupRoles = AdminGroupRoles.GetAllGroupRoles().ToList();
dtGroupRole = GlobalVars.ToDataTable<AdminGroupRoles>(adminGroupRoles);
grdGroupRoles.DataSource = dtGroupRole;
person Gosha_Fighten    schedule 16.03.2016

Используйте BindingList вместо List, как ответил Gosha_Fighten. Затем вы можете преобразовать свой список привязок в список, например:
List ‹T› list = yourbindinglist.Select(b => b).ToList();
ИЛИ
преобразовать свой список ‹T› в список привязок‹T›, например:
yourBindingList = new BindingList‹T›(listToConvert);

person bini teshome    schedule 12.12.2016