コード例 #1
0
ファイル: Controller.cs プロジェクト: mehedi09/GridWork
 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;
                     }
             }
         }
     }
 }