private ListViewItem BuildListViewItem(ListItemContent contentItem) { ListViewItem listViewItem = null; var entry = contentItem.Entry; foreach (ColumnHeader column in Columns) { var propertyInfo = entry.GetType().GetProperty(column.Name); if (null == propertyInfo) { throw new BadTemplateException($"Property {column.Name} not found in ListItemContent!"); } var value = propertyInfo.GetValue(entry, null); string text = DisplayContentHelper.GetText(propertyInfo, value); if (null == listViewItem) { listViewItem = new ListViewItem(text) { Tag = entry }; listViewItem.SubItems[0].Tag = value; } else { var subItem = new ListViewItem.ListViewSubItem { Text = text, Tag = value }; listViewItem.SubItems.Add(subItem); } } if (null != listViewItem) { if (null != contentItem.Group) { listViewItem.Group = Groups[contentItem.Group]; } if (null != contentItem.ImageKey) { listViewItem.ImageKey = contentItem.ImageKey; } } return(listViewItem); }
private Form GetForm(object entity) { var items = new List <ListItemContent>(); foreach (var propertyInfo in entity.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public)) { var value = propertyInfo.GetValue(entity, null); if (!(value is IFormattable) && !(value is string)) { continue; } var name = Translator.Instance.Translate("Details", propertyInfo.Name); var valueText = DisplayContentHelper.GetText(propertyInfo, value); items.Add(new ListItemContent(new ResultRecord(name, valueText ?? string.Empty))); } var form = SubmitFormDisplayHelper.LoadSubmitFormByExtensionId(_context.ExtensionManager, ExtensionCatalog.Details, new Dictionary <string, object> { { "Details", items } }); form.ServiceCommand += (sender, args) => { if (!"Copy".Equals(args.Command)) { return; } Clipboard.SetText(((ResultRecord)args.Argument).Value, TextDataFormat.UnicodeText); }; return(form); }