01/10/2018, 11:44

Gặp vấn đề khi dùng lệnh If trong C#

Chào cả nhà, em đang gặp lỗi với lệnh IF mà không biết xử lý sao ạ

private DataTable CreateUserGridRow(List<UserGroupPermissionInfo> usersInfo)
        {
            List<UserGroupPermissionInfo> permissionInfo = new List<UserGroupPermissionInfo>();
            List<UserPermissionInfo> UserPermissionInfo = new List<UserPermissionInfo>();
            List<UsersInfo> UsersInfo = new List<UsersInfo>();
            List<MenuItemsInfo> menuItem = new List<MenuItemsInfo>();
            permissionInfo = comService.GetUserGroupPermissionInfo(Convert.ToInt32(cbUserGroup.SelectedItem.Value));
            
            if (usersInfo != null)
            {
                for (int a = 0; a < permissionInfo.Count; a++)
                {
                    if (permissionInfo[a].user_id == "admin")
                    {
                        gvRow = gvTable.NewRow();
                        gvRow["module_name"] = permissionInfo[a].module_name;
                        string modulename = gvRow["module_name"].ToString();
                        if (UserPermissionInfo[a].module_name.ToString() == modulename)
                        {
                            if (UserPermissionInfo[a].user_id.ToString() == txt_Userid.ToString())
                            {
                                gvRow["username_access"] = UserPermissionInfo[a].username_access;
                                }
                                else
                                {
                                    gvRow["username_access"] = null;
                                }
                            }
                            else
                            {
                                gvRow["username_access"] = null;
                            }
                        gvTable.Rows.Add(gvRow);
                    }
                }
            }
            
            return gvTable;
        }

nó báo ở phần if (UserPermissionInfo[a].module_name.ToString() == modulename):

An exception of type ‘System.ArgumentOutOfRangeException’ occurred in mscorlib.dll but was not handled in user code
Additional information: Index was out of range. Must be non-negative and less than the size of the collection.

Mọi người chỉ dùm em với ạ
Em xin cảm ơn

Văn Dương viết 13:55 ngày 01/10/2018

PermissionInfo với UserPermissionInfo thì liên quan gì nhau mà trên thì for với permissionInfo còn dưới thì truy cập UserPermissionInfo ???

Joker viết 13:57 ngày 01/10/2018

Do giá trị a không nằm trong list nên gây ra lỗi, debug sẽ thấy nhé

Phan Dai viết 13:47 ngày 01/10/2018

comService.GetUserGroupPermissionInfo(Convert.ToInt32(cbUserGroup.SelectedItem.Value)) = null cho nên mới Out of range

Bài liên quan
0