Exemplo n.º 1
0
        private void InitFields()
        {
            try
            {
                list = SPContext.Current.List;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
            }

            var gridSettings = new GridGanttSettings(list);

            DisplayFormRedirect = gridSettings.DisplayFormRedirect;

            if (DisplayFormRedirect && ControlMode == SPControlMode.New && Page.Request[IsDialogParameter] != ModifiedType)
            {
                SPContext.Current.FormContext.OnSaveHandler += CustomHandler;
            }
            else if (!string.IsNullOrWhiteSpace(Page.Request[SourceParam]))
            {
                RedirectUrl = Page.Request[SourceParam];
                SPContext.Current.FormContext.OnSaveHandler += HandleNewItemRecent;
            }
            else
            {
                SPContext.Current.FormContext.OnSaveHandler += HandleNewItemRecent;
            }

            if (gridSettings.DisplaySettings != string.Empty)
            {
                fieldProperties = ListDisplayUtils.ConvertFromString(gridSettings.DisplaySettings);
            }

            try
            {
                isWorkList = gridSettings.EnableWorkList;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
            }

            if (isWorkList)
            {
                SPPageContentManager.RegisterClientScriptInclude(
                    this,
                    GetType(),
                    "WorkEngineStatusing",
                    "/_layouts/15/epmlive/WorkEngineStatusing.js");
            }


            if (list == null)
            {
                list = SPContext.Current.Web.Lists[new Guid(Page.Request[Listid])];
            }
        }
        protected override void OnLoad(EventArgs eventArgs)
        {
            if (eventArgs == null)
            {
                throw new ArgumentNullException(nameof(eventArgs));
            }

            Title = "Editable Fields";

            var gSettings = new GridGanttSettings(CurrentList);

            if (!string.IsNullOrWhiteSpace(gSettings.DisplaySettings))
            {
                _fieldProperties = ListDisplayUtils.ConvertFromString(gSettings.DisplaySettings);
            }

            foreach (SPField field in CurrentList.Fields)
            {
                if (field.Reorderable && !field.Sealed)
                {
                    _displayableFields.Add(field.Title, field);
                }
                else
                {
                    if (MatchROFields(field.Id))
                    {
                        _displayableFields.Add(field.Title, field);
                    }
                }
            }

            foreach (SPGroup group in CurrentList.ParentWeb.Groups)
            {
                _groups.Add(group);
            }

            Cancel.PostBackUrl = $"~/_layouts/listedit.aspx?List={CurrentList.ID.ToString()}";

            if (IsPostBack)
            {
                return;
            }

            _pageRender = PrepareRenderPage();
            RegisterScript();
        }
        //protected override PickerEntity[] ResolveErrorBySearch(string unresolvedText)
        //{
        //    List<PickerEntity> entities = new List<PickerEntity>();

        //    using (SPWeb web = SPContext.Current.Site.OpenWeb(propBag.LookupWebID))
        //    {

        //        SPList list = web.Lists[propBag.LookupListID];
        //        SPField field = list.Fields[propBag.LookupFieldName];
        //        string valueType = field.TypeAsString;

        //        if (field.Type == SPFieldType.Calculated)
        //        {
        //            valueType = "Text";
        //        }

        //        SPQuery query = new SPQuery();
        //        query.ViewAttributes = "Scope=\"Recursive\"";
        //        query.Query =
        //            string.Format(
        //                "<Where><Contains><FieldRef ID=\"{0}\"/><Value Type=\"{1}\">{2}</Value></Contains></Where>",
        //                propBag.LookupFieldName, valueType, unresolvedText);
        //        SPListItemCollection items = list.GetItems(query);

        //        foreach (SPListItem item in items)
        //        {
        //            entities.Add(this.GetEntity(item));
        //        }
        //    }

        //    return entities.ToArray();
        //}

        private bool IsFieldEditable()
        {
            bool   isEditable       = true;
            string editableSettings = string.Empty;

            try
            {
                SPList            list      = SPContext.Current.List;
                SPField           field     = list.Fields.GetField(propBag.Field);
                GridGanttSettings gSettings = new GridGanttSettings(list);

                if (gSettings.DisplaySettings != "")
                {
                    fieldProperties = ListDisplayUtils.ConvertFromString(gSettings.DisplaySettings);
                }

                switch (mode)
                {
                case SPControlMode.Edit:
                {
                    try
                    {
                        editableSettings = fieldProperties[propBag.Field]["Editable"];
                    }
                    catch { }

                    if (!string.IsNullOrEmpty(editableSettings))
                    {
                        if (editableSettings.Split(";".ToCharArray())[0].ToLower().Equals("never"))
                        {
                            isEditable = false;
                        }
                        else if (editableSettings.Split(";".ToCharArray())[0].ToLower().Equals("where"))
                        {
                            string where = editableSettings.Split(";".ToCharArray())[1];
                            string conditionField = string.Empty;
                            string condition      = string.Empty;
                            string group          = string.Empty;
                            string valueCondition = string.Empty;
                            if (where.Equals("[Me]"))
                            {
                                condition = editableSettings.Split(";".ToCharArray())[2];
                                group     = editableSettings.Split(";".ToCharArray())[3];
                            }
                            else         //[Field]
                            {
                                conditionField = editableSettings.Split(";".ToCharArray())[2];
                                condition      = editableSettings.Split(";".ToCharArray())[3];
                                valueCondition = editableSettings.Split(";".ToCharArray())[4];
                            }

                            isEditable = EditableFieldDisplay.RenderField(field, where, conditionField, condition, group, valueCondition, SPContext.Current.ListItem);
                        }
                    }
                }
                break;
                }
            }
            catch { }
            return(isEditable);
        }