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(); } }
/// <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); }
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); }
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); }