void btn_Click(object sender, ButtonPressedEventArgs e) { using (DocFWOForm form = new DocFWOForm(new Guid(), "", GetPickListDataource("BusinessApproveStatus", true), this.ResourceServiceProvider)) { form.ShowDialog(); ButtonEdit btn = sender as ButtonEdit; ParaEntity para = CurrentFunction.ParaList.FirstOrDefault(c => c.Name == btn.Name); if (para != null) { _dataSource[para.Name] = form.RtnValues; } } }
void dataSource_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { ParaEntity para = CurrentFunction.ParaList.FirstOrDefault(c => c.ConditionName == e.PropertyName); if (para == null || para.ParaTypeFlag != ParaTypeEnum.PickList) { return; } DependencyObject obj = sender as DependencyObject; if (obj[e.PropertyName].ToString() == "8") { _table.SuspendLayout(); Control control = _table.GetControlFromPosition(2, para.Row); ButtonEdit btn = ControlUtils.CreateButtonEdit(_dataSource, para.Name, para.Name, false, string.Empty, control.TabIndex); btn.ButtonClick += new ButtonPressedEventHandler(btn_Click); btn.Width = control.Width; _table.Controls.Remove(control); _table.Controls.Add(btn, 2, para.Row); _table.ResumeLayout(true); } else { _table.SuspendLayout(); Control control = _table.GetControlFromPosition(2, para.Row); LookUpEdit lookup = ControlUtils.CreateLookUpEdit(_dataSource, para.Name, para.Name, true, 0, null, control.TabIndex); lookup.Anchor = AnchorStyles.Left; lookup.Width = 150; lookup.Name = para.Name; GetPickDataSource(para.PickListTypeName, lookup); _table.Controls.Remove(control); _table.Controls.Add(lookup, 2, para.Row); _table.ResumeLayout(true); } }
static internal XmlDocument GenerateXml(ParaEntity entity) { var entityType = entity.GetType().Name; var doc = new XmlDocument(); var rootNode = doc.CreateElement(entityType); if (entity.Id > 0) { var attribute = doc.CreateAttribute("id"); attribute.Value = entity.Id.ToString(); rootNode.Attributes.Append(attribute); } foreach (var sf in entity.StaticFields) { bool foundFieldType = false; var fieldVal = sf.Value; //For Static fields set FieldType to ignore to skip xml generation if (fieldVal == null || sf.IgnoreSerializeXml) { continue; } //generate the nested XML for entity references if (fieldVal is IEntityReference) { var entRef = fieldVal as IEntityReference; var entityRefType = entRef.GetEntity().GetType().Name; //property name in the class //check if there is an XmlElement attribute on the property. Null if none exists var entRefTypeOverride = GetEntityReferenceXmlAttributeValue(entRef); XmlGenerateComplexEntityNode(doc, rootNode, sf.Name, entRefTypeOverride ?? entityRefType, "id", entRef.GetEntity().Id.ToString()); foundFieldType = true; } //List fields //TODO: Need to use the XmlAttributes, since class types may not match the item node name (ex CsrRole vs Role) if (sf.FieldType == "entitymultiple") { var node = doc.CreateElement(sf.Name); var sfList = sf.Value as IEnumerable <ParaEntityBaseProperties>; var attList = sf.Value as IEnumerable <Attachment>; //attachments are a special case that don't extend ParaEntityBaseProperties, so check first //Check the internal setting to determine whether to delete the list of attachments (send an empty node) if (attList != null && (entity.GetFieldValue <bool?>("AllowDeleteAllAttachments") == true || attList.Any())) { var nodeName = sf.Name; node = XmlGenerateAttachmentNodes(doc, nodeName, attList); rootNode.AppendChild(node); } //Don't populate if the list is empty else if (sfList != null && sfList.Any()) { //Handle the very specific download folders scenario if (entity is Download && sf.Name == "Folders") { node = GenerateDownloadFoldersNode(entity as Download, doc, rootNode); rootNode.AppendChild(node); } else { foreach (var ent in sfList) { var nodeName = ent.GetType().Name; var nodechild = doc.CreateElement(nodeName); var attribute = doc.CreateAttribute("id"); attribute.Value = ent.Id.ToString(); nodechild.Attributes.Append(attribute); node.AppendChild(nodechild); } } rootNode.AppendChild(node); } foundFieldType = true; } //for simple types, a tostring suffices if (fieldVal is Int32 || fieldVal is Int64 || fieldVal is string) { XmlGenerateElement(doc, rootNode, sf.Name, sf.Value.ToString()); foundFieldType = true; } //C# outputs boolean.ToString as "True" or "False"... Needs to be lower case for XML if (fieldVal is bool) { XmlGenerateElement(doc, rootNode, sf.Name, sf.Value.ToString().ToLower()); foundFieldType = true; } //DateTimes are more odd if (fieldVal is DateTime) { var val = (DateTime)fieldVal; const string dateTimeFormat = "yyyy-MM-ddTHH:mm:ssZ"; XmlGenerateElement(doc, rootNode, sf.Name, val.ToString(dateTimeFormat)); foundFieldType = true; } if (!foundFieldType) { throw new Exception(String.Format("No XML generation logic found for field type: {0}", sf.FieldType)); } } ObjectGenerateCustomFieldsXml(doc, rootNode, entity.CustomFields); doc.AppendChild(rootNode); return(doc); }