예제 #1
0
        private void ApplyFilters()
        {
            StringBuilder sb1 = new StringBuilder();
            StringBuilder sb2 = new StringBuilder();

            UserContext user = UserContext.Current;

            if ((user != null) && (user.OrganizationId != Guid.Empty))
            {
                if (!user.IsOrganizationAdministrator)
                {
                    ArrayList userGroups = user.GroupIdList;

                    foreach (ClientDataSet.GroupsInstancesRolesRow row in GroupProvider.GetGroupsInstancesRolesByRoleId(user.OrganizationId, RoleProvider.InstanceAdministratorRoleId))
                    {
                        if (!userGroups.Contains(row.GroupId))
                        {
                            sb1.AppendFormat(",'{0}'", row.InstanceId);
                            sb2.AppendFormat(",'{0}'", row.GroupId);
                        }
                    }

                    if (sb1.Length > 0)
                    {
                        sb1.Remove(0, 1);
                        sb1.Append(")");
                        sb1.Insert(0, "CONVERT(InstanceId, 'System.String') NOT IN (");
                        InstanceListDataSource.FilterExpression = sb1.ToString();
                    }

                    if (sb2.Length > 0)
                    {
                        sb2.Remove(0, 1);
                        sb2.Append(")");
                        sb2.Insert(0, "CONVERT(GroupId, 'System.String') NOT IN (");
                        GroupListDataSource.FilterExpression = sb2.ToString();
                    }
                }
            }
        }