예제 #1
0
 public ExistingRecordData(ListItemId listItemId, object primaryKey, bool hasSeparateDisplayValue, object displayValue)
 {
     ListItemId               = listItemId;
     _pkValue                 = primaryKey;
     _displayValue            = displayValue ?? _pkValue;
     _hasSeparateDisplayValue = hasSeparateDisplayValue;
 }
예제 #2
0
        public ListData AddRow(IDictionary <string, object> values, out ListItemId newItemId)
        {
            if (_ids.Count == 0)
            {
                newItemId = new ListItemId(1);
            }
            else
            {
                newItemId = new ListItemId(_ids[_ids.Count - 1].IntValue + 1);
            }
            var newIds = ImmutableList.ValueOf(_ids.Concat(new[] { newItemId }));

            return(ChangeProp(ImClone(this), im =>
            {
                var newColumns = new List <ColumnData>();
                for (int iCol = 0; iCol < ListDef.Properties.Count; iCol++)
                {
                    object value;
                    values.TryGetValue(ListDef.Properties[iCol].Name, out value);
                    newColumns.Add(Columns[iCol].AddRow(value));
                }
                im.Columns = ImmutableList.ValueOf(newColumns);
                im._ids = newIds;
                im.RebuildIndex();
            }));
        }
예제 #3
0
        public int RowIndexOf(ListItemId listItemId)
        {
            if (_ids == null)
            {
                if (listItemId.IntValue < 0 || listItemId.IntValue >= RowCount)
                {
                    return(-1);
                }
            }
            int index = CollectionUtil.BinarySearch(_ids, listItemId);

            if (index < 0)
            {
                return(-1);
            }
            return(index);
        }
예제 #4
0
        public static ListItem ExistingRecord(ListData listData, ListItemId id)
        {
            var itemType = ListItemTypes.INSTANCE.GetListItemType(listData.ListName);

            return(ExistingRecord(itemType, listData, listData.RowIndexOf(id)));
        }
예제 #5
0
        private ListItem ConstructListItem(ListItemId listItemId)
        {
            var listData = ((SkylineDataSchema)DataSchema).Document.Settings.DataSettings.FindList(ListName);

            return(ListItem.ExistingRecord(listData, listItemId));
        }
예제 #6
0
        protected override TItem ConstructItem(ListItemId key)
        {
            var listData = DataSchema.Document.Settings.DataSettings.FindList(ListName);

            return((TItem)ListItem.ExistingRecord(listData, key));
        }