public void OnGridRowControlsBind(GridRowControlBindEventArgs e)
 {
 }
 /// <summary>
 /// Disabled organizations cannot be edited and deleted.
 /// </summary>
 /// <param name="e"></param>
 public override void OnGridRowControlsBind(GridRowControlBindEventArgs e)
 {
     OrganizationStatus status = (OrganizationStatus)DataBinder.Eval(e.DataItem, "Status");
     e.ShowDeleteButton = status != OrganizationStatus.Disabled;
 }
 /// <summary>
 /// Not approved concrete datas cannot be edited and deleted.
 /// </summary>
 /// <param name="e"></param>
 public override void OnGridRowControlsBind(GridRowControlBindEventArgs e)
 {
     DeleteStatus deleteStatus = (DeleteStatus)DataBinder.Eval(e.DataItem, "DeleteStatus");
     e.ShowDeleteButton = deleteStatus != DeleteStatus.Deleted;
 }
 /// <summary>
 /// Cannot modify and delete the inherited fields from parents.
 /// </summary>
 /// <param name="e"></param>
 public override void OnGridRowControlsBind(GridRowControlBindEventArgs e)
 {
     bool inherited = (bool)DataBinder.Eval(e.DataItem, "Inherited");
     e.ShowDeleteButton = !inherited;
     e.ShowEditButton = !inherited;
 }
        /// <summary>
        /// Convert QueryResults by generate decorate serializable class with transformed values.
        /// </summary>
        /// <param name="dynamicPageService"></param>
        /// <param name="results"></param>
        /// <returns></returns>
        private static IEnumerable ConvertQueryResults(IDynamicPage dynamicPageService, IEnumerable results)
        {
            IEnumerable<object> originalObjects = results.Cast<object>();
            if (originalObjects.Count() == 0) return results;

            IEnumerable<PropertyDefinition> propertyDecorateConfigs = CreatePropertyDecorateConfigs(dynamicPageService);
            IEnumerable<object> convertResults = null;

            try
            {
                convertResults = ClassDecorator.CreateDecorateObjects(originalObjects, propertyDecorateConfigs.ToArray()).Cast<object>();
            }
            catch (CompileException exp)
            {
                string loggingMessage = string.Format(CultureInfo.InvariantCulture, "There has errors to compile a dynamic class from dynamic page configuration to render UI grid of the dynamic page with object id equals to \"{0}\".", QueryStringUtility.ObjectId);
                Logger.Instance(typeof(DynamicPageDataServiceHandler)).Error(loggingMessage, exp);
                throw;
            }

            ObjectWrapper convertResultObjectWrapper = new ObjectWrapper(convertResults.First().GetType());
            for (int i = 0; i < originalObjects.Count(); i++)
            {
                object originalObject = originalObjects.ElementAt(i);
                GridRowControlBindEventArgs arg = new GridRowControlBindEventArgs(originalObject);
                dynamicPageService.OnGridRowControlsBind(arg);
                convertResultObjectWrapper.WrappedInstance = convertResults.ElementAt(i);

                // set visibility of checkbox
                bool showCheckBoxColumn = (bool)convertResultObjectWrapper.GetPropertyValue(DynamicPageDataServiceHandler.ShowCheckBoxColumnPropertyName);
                convertResultObjectWrapper.SetPropertyValue(DynamicPageDataServiceHandler.ShowCheckBoxColumnPropertyName, showCheckBoxColumn && arg.ShowCheckBoxColumn);

                // set visibility of edit button
                string permissionValue = string.Format(CultureInfo.InvariantCulture, "{0}.Update", dynamicPageService.Configuration.PermissionValue);
                bool hasUpdatePermission = permissionBridge.HasPermission(permissionValue);
                bool showEditButtonColumn = (bool)convertResultObjectWrapper.GetPropertyValue(DynamicPageDataServiceHandler.ShowEditButtonColumnPropertyName);
                convertResultObjectWrapper.SetPropertyValue(DynamicPageDataServiceHandler.ShowEditButtonColumnPropertyName, showEditButtonColumn && arg.ShowEditButton && hasUpdatePermission);

                // set visibility of view button
                bool showViewButtonColumn = (bool)convertResultObjectWrapper.GetPropertyValue(DynamicPageDataServiceHandler.ShowViewButtonColumnPropertyName);
                convertResultObjectWrapper.SetPropertyValue(DynamicPageDataServiceHandler.ShowViewButtonColumnPropertyName, showViewButtonColumn && arg.ShowViewButton);

                // set visibility of delete button
                permissionValue = string.Format(CultureInfo.InvariantCulture, "{0}.Delete", dynamicPageService.Configuration.PermissionValue);
                bool hasDeletePermission = permissionBridge.HasPermission(permissionValue);
                bool showDeleteButtonColumn = (bool)convertResultObjectWrapper.GetPropertyValue(DynamicPageDataServiceHandler.ShowDeleteButtonColumnPropertyName);
                convertResultObjectWrapper.SetPropertyValue(DynamicPageDataServiceHandler.ShowDeleteButtonColumnPropertyName, showDeleteButtonColumn && arg.ShowDeleteButton && hasDeletePermission);
            }

            return convertResults;
        }
 /// <summary>
 /// Not approved users cannot be edited and deleted.
 /// </summary>
 /// <param name="e"></param>
 public override void OnGridRowControlsBind(GridRowControlBindEventArgs e)
 {
     bool isApproved = (bool)DataBinder.Eval(e.DataItem, "IsApproved");
     e.ShowDeleteButton = isApproved;
 }