コード例 #1
0
        public void ApplyChanges()
        {
            var newGridColumns = new List <GridFieldMetadata>();

            for (var i = 1; i <= CurrentColumns.Count(); i++)
            {
                var    thisOne             = CurrentColumns.ElementAt(i - 1);
                string overWriteRecordType = null;
                string aliasedFieldName    = null;
                string fieldName           = thisOne.FieldName;
                if (thisOne.FieldName != null && thisOne.FieldName.Contains("."))
                {
                    //any fields in related witll be of form
                    //lookupfield|recordtype.fieldname
                    //so we need to capture their detail form the grid field metadata
                    var splitPaths = thisOne.FieldName.Split('.');
                    fieldName = splitPaths[splitPaths.Length - 1];
                    var lastPath        = splitPaths[splitPaths.Length - 2];
                    var splitlookupType = lastPath.Split('|');
                    if (splitlookupType.Count() < 2)
                    {
                        throw new Exception("There was an error determining tyo eof the field named " + thisOne.FieldName);
                    }
                    overWriteRecordType = splitlookupType[1];
                    //change alias to lookupfield_recordtype.fieldname as | is not a vlaid character
                    aliasedFieldName = splitlookupType[0] + "_" + splitlookupType[1] + "." + fieldName;
                }
                newGridColumns.Add(new GridFieldMetadata(new ViewField(fieldName, i, Convert.ToInt32(thisOne.Width)))
                {
                    AltRecordType = overWriteRecordType, AliasedFieldName = aliasedFieldName, OverrideLabel = thisOne.FieldLabel
                });
            }
            ApplySelections(newGridColumns);
        }
コード例 #2
0
 public void RemoveCurrentField(string fieldName)
 {
     if (CurrentColumns.Count == 1 && CurrentColumns.First().FieldName == fieldName)
     {
         ApplicationController.UserMessage("There Must Be At Least One View Column");
     }
     else
     {
         //if removed field active for the current selected link then add it as an option
         if ((!fieldName.Contains(".") && SelectedLink.Key == RecordType) ||
             (fieldName.Contains(".") && fieldName.Split('.')[0] == SelectedLink.Key))
         {
             var selectedResults = CurrentColumns.Where(c => c.FieldName == fieldName).ToArray();
             foreach (var result in selectedResults)
             {
                 CurrentColumns.Remove(result);
                 foreach (var item in SelectableColumns)
                 {
                     if (item.FieldLabel != null && item.FieldLabel.CompareTo(result.FieldLabel) > 0)
                     {
                         SelectableColumns.Insert(SelectableColumns.IndexOf(item), result);
                         break;
                     }
                 }
                 if (!SelectableColumns.Contains(result))
                 {
                     SelectableColumns.Add(result);
                 }
             }
         }
     }
 }
コード例 #3
0
 public void RemoveCurrentField(string fieldName)
 {
     if (CurrentColumns.Count == 1 && CurrentColumns.First().FieldName == fieldName)
     {
         ApplicationController.UserMessage("The Must Be At Least One View Column");
     }
     else
     {
         var selectedResults = CurrentColumns.Where(c => c.FieldName == fieldName).ToArray();
         foreach (var result in selectedResults)
         {
             CurrentColumns.Remove(result);
             foreach (var item in SelectableColumns)
             {
                 if (item.FieldLabel != null && item.FieldLabel.CompareTo(result.FieldLabel) > 0)
                 {
                     SelectableColumns.Insert(SelectableColumns.IndexOf(item), result);
                     break;
                 }
             }
             if (!SelectableColumns.Contains(result))
             {
                 SelectableColumns.Add(result);
             }
         }
     }
 }
コード例 #4
0
        private IEnumerable <SelectableColumn> GetSelectableColumnsFor(string thisType)
        {
            var keyPrefix   = "";
            var labelPrefix = "";

            if (SelectedLink != null && SelectedLink.Key.Contains("|"))
            {
                keyPrefix   = SelectedLink.Key + ".";
                labelPrefix = SelectedLink.Value + " > ";
            }
            return(RecordService
                   .GetFields(thisType)
                   .Select(f => new SelectableColumn(keyPrefix + f, labelPrefix + RecordService.GetFieldLabel(f, thisType), 200, RemoveCurrentField, AddCurrentField, ApplicationController))
                   .Where(sc => !CurrentColumns.Any(c => c.FieldName == sc.FieldName))
                   .OrderBy(sc => sc.FieldLabel)
                   .ToArray());
        }
コード例 #5
0
 public void RefreshIsFirstColumn()
 {
     if (CurrentColumns != null)
     {
         foreach (var column in CurrentColumns.ToArray().Skip(1))
         {
             if (column.IsFirstColumn)
             {
                 column.IsFirstColumn = false;
             }
         }
         if (CurrentColumns.Any())
         {
             CurrentColumns.First().IsFirstColumn = true;
         }
     }
 }
コード例 #6
0
 public void AddCurrentItem(SelectableColumn draggedItem, SelectableColumn target = null, bool isAfter = true)
 {
     DoOnMainThread(() =>
     {
         SelectableColumns.Remove(draggedItem);
         CurrentColumns.Remove(draggedItem);
         if (target != null && CurrentColumns.Contains(target))
         {
             CurrentColumns.Insert(CurrentColumns.IndexOf(target) + (isAfter ? 1 : 0), draggedItem);
         }
         else
         {
             CurrentColumns.Add(draggedItem);
         }
         RefreshIsFirstColumn();
     });
 }