private void AddNewRow(DataRowViewModel dataRowViewModel)
        {
            var newRow = new DataRowView {
                DataContext = dataRowViewModel, DataCellWidth = DataCellWidth
            };
            // Adjust header cells' width
            var binding = new Binding("ActualWidth")
            {
                Source = newRow.PART_NameCell
            };

            PART_HeaderRow.PART_NameCell.SetBinding(WidthProperty, binding);
            PART_MaxRow.PART_NameCell.SetBinding(WidthProperty, binding);
            PART_MinRow.PART_NameCell.SetBinding(WidthProperty, binding);

            // Add separator
            PART_ItemsStack.Children.Add(new Separator());

            // Add new row
            PART_ItemsStack.Children.Add(newRow);

            if (PART_AutoScrollCheckBox.IsChecked != null && (bool)PART_AutoScrollCheckBox.IsChecked)
            {
                PART_ScrollViewer.ScrollToBottom();
            }
        }
示例#2
0
        /// <summary>
        /// Get display name for entity
        /// </summary>
        /// <param name="entity">Entity</param>
        /// <param name="row">Instance value</param>
        /// <returns>Display name</returns>
        private string GetDisplayName(Entity entity, DataRowViewModel row)
        {
            // check if has to string attribute
            if (!entity.RecordDisplayFormat.IsNullOrEmpty())
            {
                var result = entity.RecordDisplayFormat;
                foreach (var cell in row.Values)
                {
                    result = result.Replace("{" + cell.Property.Name + "}", cell.Value);
                }

                return(result);
            }
            // if not check if has ToString() method
            else if (entity.HasToStringMethod)
            {
                var methodInfo = entity.Type.GetMethod("ToString");
                var instance   = Activator.CreateInstance(entity.Type, null);

                foreach (var cell in row.Values.Where(x => !x.Property.IsForeignKey || (x.Property.IsForeignKey && x.Property.IsSystemType)))
                {
                    var propertyInfo = entity.Type.GetProperty(cell.Property.Name);
                    propertyInfo.SetValue(instance, cell.RawValue);
                }

                var result = methodInfo.Invoke(instance, null);

                return(result.ToStringSafe());
            }
            // if not get first matching property
            // %Name%, %Title%, %Description%, %Value%
            // if not found any property use KeyValue
            var possibleNames = new List <string> {
                "name", "title", "description", "value"
            };
            var value = String.Empty;

            foreach (var possibleName in possibleNames)
            {
                var cell = row.Values.FirstOrDefault(x => x.Property.Name.ToLower().Contains("name"));
                if (cell != null)
                {
                    value = cell.Value;
                    break;
                }
            }

            if (value.IsNullOrEmpty())
            {
                return("#" + row.KeyValue);
            }

            return(value);
        }
示例#3
0
        private DataRowViewModel ExpandoToDataRow(IDictionary <String, Object> recordDict, Entity entity, string prefix = null)
        {
            var row = new DataRowViewModel();

            row.KeyValue     = recordDict[prefix + entity.Key.ColumnName].ToStringSafe();
            row.LinkKeyValue = recordDict[prefix + entity.LinkKey.ColumnName].ToStringSafe();
            foreach (var property in entity.DisplayProperties)
            {
                row.Values.Add(new CellValueViewModel
                {
                    RawValue = recordDict[prefix + property.ColumnName],
                    Value    = recordDict[prefix + property.ColumnName].ToStringSafe(property),
                    Property = property
                });
            }

            return(row);
        }
示例#4
0
        public DataTableViewModel GetDataTableResult(DataTable dt)
        {
            var res = new DataTableViewModel();

            foreach (DataColumn column in dt.Columns)
            {
                res.headers.Add(column.ColumnName);
            }
            foreach (DataRow dr in dt.Rows)
            {
                var row = new DataRowViewModel();
                row.values = dr.ItemArray.Select(x =>
                {
                    return(x.ToString());
                }).ToList();
                res.rows.Add(row);
            }
            return(res);
        }