protected void PopulatePageFields(ViewPage page) { if (page.Fields.Count > 0) return; XPathNodeIterator dataFieldIterator = _view.Select(".//c:dataFields/c:dataField", Resolver); while (dataFieldIterator.MoveNext()) { XPathNodeIterator fieldIterator = _config.Select("/c:dataController/c:fields/c:field[@name=\'{0}\']", dataFieldIterator.Current.GetAttribute("fieldName", String.Empty)); if (fieldIterator.MoveNext()) { DataField field = new DataField(fieldIterator.Current, Resolver); field.Hidden = (dataFieldIterator.Current.GetAttribute("hidden", String.Empty) == "true"); field.DataFormatString = fieldIterator.Current.GetAttribute("dataFormatString", String.Empty); string formatOnClient = dataFieldIterator.Current.GetAttribute("formatOnClient", String.Empty); if (!(String.IsNullOrEmpty(formatOnClient))) field.FormatOnClient = formatOnClient != "false"; if (String.IsNullOrEmpty(field.DataFormatString)) field.DataFormatString = dataFieldIterator.Current.GetAttribute("dataFormatString", String.Empty); field.HeaderText = ((string)(dataFieldIterator.Current.Evaluate("string(c:headerText)", Resolver))); field.FooterText = ((string)(dataFieldIterator.Current.Evaluate("string(c:footerText)", Resolver))); field.ToolTip = dataFieldIterator.Current.GetAttribute("toolTip", String.Empty); field.Watermark = dataFieldIterator.Current.GetAttribute("watermark", String.Empty); field.HyperlinkFormatString = dataFieldIterator.Current.GetAttribute("hyperlinkFormatString", String.Empty); field.AliasName = dataFieldIterator.Current.GetAttribute("aliasFieldName", String.Empty); field.Tag = dataFieldIterator.Current.GetAttribute("tag", String.Empty); if (!(String.IsNullOrEmpty(dataFieldIterator.Current.GetAttribute("allowQBE", String.Empty)))) field.AllowQBE = (dataFieldIterator.Current.GetAttribute("allowQBE", String.Empty) == "true"); if (!(String.IsNullOrEmpty(dataFieldIterator.Current.GetAttribute("allowSorting", String.Empty)))) field.AllowSorting = (dataFieldIterator.Current.GetAttribute("allowSorting", String.Empty) == "true"); field.CategoryIndex = Convert.ToInt32(dataFieldIterator.Current.Evaluate("count(parent::c:dataFields/parent::c:category/preceding-sibling::c:category)", Resolver)); string columns = dataFieldIterator.Current.GetAttribute("columns", String.Empty); if (!(String.IsNullOrEmpty(columns))) field.Columns = Convert.ToInt32(columns); string rows = dataFieldIterator.Current.GetAttribute("rows", String.Empty); if (!(String.IsNullOrEmpty(rows))) field.Rows = Convert.ToInt32(rows); string textMode = dataFieldIterator.Current.GetAttribute("textMode", String.Empty); if (!(String.IsNullOrEmpty(textMode))) field.TextMode = ((TextInputMode)(TypeDescriptor.GetConverter(typeof(TextInputMode)).ConvertFromString(textMode))); string maskType = fieldIterator.Current.GetAttribute("maskType", String.Empty); if (!(String.IsNullOrEmpty(maskType))) field.MaskType = ((DataFieldMaskType)(TypeDescriptor.GetConverter(typeof(DataFieldMaskType)).ConvertFromString(maskType))); field.Mask = fieldIterator.Current.GetAttribute("mask", String.Empty); string readOnly = dataFieldIterator.Current.GetAttribute("readOnly", String.Empty); if (!(String.IsNullOrEmpty(readOnly))) field.ReadOnly = (readOnly == "true"); string aggregate = dataFieldIterator.Current.GetAttribute("aggregate", String.Empty); if (!(String.IsNullOrEmpty(aggregate))) field.Aggregate = ((DataFieldAggregate)(TypeDescriptor.GetConverter(typeof(DataFieldAggregate)).ConvertFromString(aggregate))); string search = dataFieldIterator.Current.GetAttribute("search", String.Empty); if (!(String.IsNullOrEmpty(search))) field.Search = ((FieldSearchMode)(TypeDescriptor.GetConverter(typeof(FieldSearchMode)).ConvertFromString(search))); field.SearchOptions = dataFieldIterator.Current.GetAttribute("searchOptions", String.Empty); string prefixLength = dataFieldIterator.Current.GetAttribute("autoCompletePrefixLength", String.Empty); if (!(String.IsNullOrEmpty(prefixLength))) field.AutoCompletePrefixLength = Convert.ToInt32(prefixLength); XPathNodeIterator itemsIterator = dataFieldIterator.Current.Select("c:items[c:item]", Resolver); if (!(itemsIterator.MoveNext())) { itemsIterator = fieldIterator.Current.Select("c:items", Resolver); if (!(itemsIterator.MoveNext())) itemsIterator = null; } if (itemsIterator != null) { field.ItemsDataController = itemsIterator.Current.GetAttribute("dataController", String.Empty); field.ItemsDataView = itemsIterator.Current.GetAttribute("dataView", String.Empty); field.ItemsDataValueField = itemsIterator.Current.GetAttribute("dataValueField", String.Empty); field.ItemsDataTextField = itemsIterator.Current.GetAttribute("dataTextField", String.Empty); field.ItemsStyle = itemsIterator.Current.GetAttribute("style", String.Empty); field.ItemsNewDataView = itemsIterator.Current.GetAttribute("newDataView", String.Empty); field.Copy = itemsIterator.Current.GetAttribute("copy", String.Empty); string pageSize = itemsIterator.Current.GetAttribute("pageSize", String.Empty); if (!(String.IsNullOrEmpty(pageSize))) field.ItemsPageSize = Convert.ToInt32(pageSize); field.ItemsLetters = (itemsIterator.Current.GetAttribute("letters", String.Empty) == "true"); XPathNodeIterator itemIterator = itemsIterator.Current.Select("c:item", Resolver); while (itemIterator.MoveNext()) { string itemValue = itemIterator.Current.GetAttribute("value", String.Empty); if (itemValue == "NULL") itemValue = String.Empty; string itemText = itemIterator.Current.GetAttribute("text", String.Empty); field.Items.Add(new object[] { itemValue, itemText}); } if (!(String.IsNullOrEmpty(field.ItemsNewDataView)) && (((ActionArgs.Current == null) || (ActionArgs.Current.Controller == field.ItemsDataController)) && ((PageRequest.Current == null) || (PageRequest.Current.Controller == field.ItemsDataController)))) { Controller itemsController = ((Controller)(this.GetType().Assembly.CreateInstance(this.GetType().FullName))); itemsController.SelectView(field.ItemsDataController, field.ItemsNewDataView); string roles = ((string)(itemsController._config.Evaluate("string(//c:action[@commandName=\'New\' and @commandArgument=\'{0}\'][1]/@roles)", field.ItemsNewDataView))); if (!(Controller.UserIsInRole(roles))) field.ItemsNewDataView = null; } field.AutoSelect = (itemsIterator.Current.GetAttribute("autoSelect", String.Empty) == "true"); field.SearchOnStart = (itemsIterator.Current.GetAttribute("searchOnStart", String.Empty) == "true"); field.ItemsDescription = itemsIterator.Current.GetAttribute("description", String.Empty); } if (!(Controller.UserIsInRole(fieldIterator.Current.GetAttribute("writeRoles", String.Empty)))) field.ReadOnly = true; if (!(Controller.UserIsInRole(fieldIterator.Current.GetAttribute("roles", String.Empty)))) { field.ReadOnly = true; field.Hidden = true; } page.Fields.Add(field); // populate pivot info if (page.RequiresPivot) { if ((page.PivotDefinitions != null) && page.PivotDefinitions.ContainsKey(field.Name)) field.Tag = (field.Tag + (" " + page.PivotDefinitions[field.Name])); foreach (string tag in field.Tag.Split(' ')) if (tag.StartsWith("pivot")) { page.AddPivotField(field); break; } } } } }