2016-03-16 4 views
2

Я новичок в devexpress. когда я добавляю новую строку и заполняю какое-то значение одной ячейке, тогда я фокусируюсь на другой ячейке в той же строке, которую я потерял в этой ячейке. Это мой код (имя столбца в GridView матча с coumn в DataTable dtGroupRole)Измененная ячейка была сброшена после изменения фокуса в gridview с использованием devexpress 15.2 C#

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

была сброшена Отредактированные клетки:

Edited cell was reset

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

ответ

0

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

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

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