private void GetDetailWordInfo() { _ClientInfo = new ClientInfo(); Hashtable _MetaHash = new Hashtable(); Hashtable _Detail = new Hashtable(); try { String _FKey = base.GetQueryValue("FKey"); String _ResxType = base.GetQueryValue("CultureType"); ResxManagerInfo _ResxCtrl = new ResxManagerInfo(); DataSet _DS = _ResxCtrl.GetDetailWordInfo(_FKey, _ResxType); _MetaHash.Add("DetailInfo", MetaDataInfo.GetListHashData(_DS)); _ClientInfo.Status = true; } catch (Exception ex) { _ClientInfo.Status = false; _ClientInfo.Message = "数据访问失败,请稍候再试!"; } Hashtable _Hash = new Hashtable(); _Hash.Add(CONST_COMMON.ClientInfo, _ClientInfo); _Hash.Add(CONST_COMMON.Meta, _MetaHash); String _Context = MetaDataInfo.GetClientMetaData <Hashtable>(_Hash); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/json"; HttpContext.Current.Response.Write(_Context); HttpContext.Current.Response.End(); }
/// <summary> /// 将当前选中的表添加到xml里的metadata里去。 /// </summary> /// <param name="xml"></param> /// <param name="_CurrentDataTable"></param> void AddTableToXml(XmlTemplate xml, List <MetaDataColumnInfo> _CurrentDataTable) { if (null == xml.MetaDataItem) { xml.MetaDataItem = new List <MetaDataInfo>(); } var dt = _CurrentDataTable[0]; var data = xml.MetaDataItem.Where(p => p.table_name.ToLower().Equals(dt.table_name.ToLower())).GetFirst <MetaDataInfo>(); if (null != data) { return; } data = new MetaDataInfo(); xml.MetaDataItem.Add(data); data.table_comment = dt.table_comment; data.table_name = dt.table_name; data.table_type = dt.table_type; data.Item = _CurrentDataTable.CloneList <MetaDataColumnInfo>(); int _count = data.Item.Count; for (int i = 0; i < _count; i++) { var child = data.Item[i]; child.table_comment = string.Empty; child.table_name = string.Empty; child.table_type = string.Empty; _CurrentDataTable[i].IsChoose = false; } }
private IPocoClassGenerator GenerateModel(MetaDataInfo metaData) { var gen = PocoFactory.GeneratePoco(metaData, Setting); ClassList = gen.ClassList; return(gen); }
internal Poco(MetaDataInfo metaData, PocoSetting setting) { _setting = setting ?? new PocoSetting(); MetaData = metaData; SchemaErrors = new List <string>(); EntitySets = new List <IEdmEntitySet>(); }
void GetControlProperty(ControlInfo _CurrentControlInfo, PropertyInfoAttribute pia) { //-->哪个控件,哪个属性 //PropertyInfoAttribute pia = v as PropertyInfoAttribute; if (null == pia) { return; } //-->得到选中的控件 string controlName = string.Format("{0}|{1}", _CurrentControlInfo.Name, pia.Name); if (_DictResult.ContainsKey(controlName)) { return; } string dataType = "varchar"; MetaDataInfo mdi = this.IDesignFramework.GetMetaDataInfoByTableName(_CurrentControlInfo.MetaData); if (null == mdi) { var controlObj = _CurrentPageControl.FindName(_CurrentControlInfo.Name); if (null != controlObj) { var pi = controlObj.GetType().GetProperty(pia.Name); dataType = pi != null ? pi.PropertyType.FullName : dataType; } } else { MetaDataColumnInfo mdci = mdi.Item.Where(p => p.column_name.Equals(_CurrentControlInfo.ColumnName)).GetFirst <MetaDataColumnInfo>(); } _DictResult.Add(controlName, dataType); }
public O2P(PocoSetting?setting = null) { Setting = setting ?? new PocoSetting(); ClassList = new List <ClassTemplate>(); MetaData = new MetaDataInfo(); CodeText = ""; }
//========================================================================= public List <MetaDataInfo> Events(string TypeName) { List <MetaDataInfo> Names = new List <MetaDataInfo>(); foreach (string FileName in Dlls(TypeName)) { string DLLFileName = Configuration.RemoveMacros(FileName); string ClassName = ProxyClassName(TypeName, DLLFileName); //Type T = GetProbeInfoAssembly().GetType("ModelFramework." + StringManip.CamelCase(TypeName)); Type T = GetProbeInfoAssembly().GetType("ModelFramework." + ClassName); if (T != null) { foreach (EventInfo Event in T.GetEvents()) { string Description = ""; foreach (object Attribute in Event.GetCustomAttributes(false)) { if (Attribute.ToString() != "Event") { Description = Attribute.ToString(); } } MetaDataInfo Info = new MetaDataInfo(); Info.Name = Event.Name; Info.Description = Description; Names.Add(Info); } } else { //attempt to get these details from getDescription() String descr = ""; descr = DLLProber.ProbeDLLForDescriptionXML(ClassName, DLLFileName); if (descr.Length > 0) { TComponentDescrParser comp = new TComponentDescrParser(descr); //need to read all the event information String eventSDML = comp.firstEvent(); while (eventSDML.Length > 0) { //create an event attribute of this class TCompEvent newEvent; newEvent = new TCompEvent(eventSDML); if (newEvent.sKind == "published") { MetaDataInfo Info = new MetaDataInfo(); Info.Name = newEvent.Name; Info.Description = newEvent.sDescr; Names.Add(Info); } eventSDML = comp.nextEvent(); } } } } return(Names); }
bool UpdateMetaDataInfo() { var fields = this.lboxFields.Tag as List <MetaDataColumnInfo>; if (null == fields || 0 == fields.Count) { Wrapper.ShowDialog("字符参数为空"); return(false); } var dt = fields[0]; MetaDataInfo mdi = new MetaDataInfo(); //-->克隆出数据。 mdi.Item = fields.CloneList <MetaDataColumnInfo>(); mdi.table_comment = dt.table_comment; mdi.table_name = dt.table_name; mdi.table_type = dt.table_type; foreach (var data in mdi.Item) { data.table_comment = string.Empty; data.table_name = string.Empty; data.table_type = string.Empty; } var xml = IDesignFramework.GetCurrentXmlTemplate(); var ci = IDesignFramework.GetControlInfoByControlName(this.CurrentSelectedControlName); if (null == ci) { Wrapper.ShowDialog("找不着控件信息。"); return(false); } ci.MetaData = ci.MetaData.IsNullOrEmpty() ? _TableName : ci.MetaData; ci.ColumnName = ci.ColumnName.IsNullOrEmpty() ? _SaveField : ci.ColumnName; ci.ControlDataSourceTableName = mdi.table_name; //-->判断tableName是否已经增加了 MetaDataInfo old_mdi = IDesignFramework.GetMetaDataInfoByTableName(mdi.table_name); if (null == old_mdi) { xml.MetaDataItem.Add(mdi); } else { //-->判断列是否已经存在。 foreach (var column in mdi.Item) { var col = old_mdi.Item.Where(p => p.column_name.Equals(column.column_name)).GetFirst <MetaDataColumnInfo>(); if (null != col) { old_mdi.Item.Remove(col); } old_mdi.Item.Add(column); } } IDesignFramework.UpdateCurrentTemplate(); return(true); }
/// <summary> /// /// </summary> /// <param name="cmd">复合控件命令对象类</param> public void InitTitle(CtrlPlatformCommandInfo cmd) { _ControlInfo = cmd.ControlInfo; _MetaDataInfo = cmd.MetaDataInfo; if (!_ControlInfo.Comment.IsNullOrEmpty()) { this.TextContent = _ControlInfo.Comment; } }
/// <summary> /// /// </summary> /// <param name="cmd"></param> public void InitTitle(CtrlPlatformCommandInfo cmd) { _ControlInfo = cmd.ControlInfo; _MetaDataInfo = cmd.MetaDataInfo; this.TextContent = _ControlInfo.Comment; if (null == _MetaDataInfo || null == _MetaDataInfo.Item || 0 == _MetaDataInfo.Item.Count) { return; } }
void BuildColumnTree(TreeViewItem parent, string tableName, MetaDataInfo columns) { foreach (var child in columns.Item) { TreeViewItem c_tvi = new TreeViewItem(); c_tvi.Name = string.Format("tvi_{0}_{1}", tableName, child.column_name); c_tvi.Header = string.Format("{0}", child.column_comment); c_tvi.Tag = child; parent.Items.Add(c_tvi); } }
/// <summary> /// 初始化标题 /// </summary> /// <param name="cmd"></param> public virtual void InitTitle(CtrlPlatformCommandInfo cmd) { _ControlInfo = cmd.ControlInfo; _MetaDataInfo = cmd.MetaDataInfo; this.TextContent = _ControlInfo.Comment; if (null == _MetaDataInfo || null == _MetaDataInfo.Item || 0 == _MetaDataInfo.Item.Count) { return; } this.FieldLength = _MetaDataInfo.Item[0].character_maximum_length; }
public static void setMetaDataAlias(MetaDataInfo metaData) { if (metaData.alias != null && metaData.rs.ContainsKey(metaData.alias) && metaData.rs[metaData.alias] != null) { Dictionary <string, string> langMap = metaData.rs[metaData.alias]; string langName = getLangName(langMap); if (langName != null) { metaData.alias = langName; } } }
private void CreateItem() { _ClientInfo = new ClientInfo(); _ClientInfo.Status = true; _ClientInfo.Message = "adsfasd"; Hashtable _Hash = new Hashtable(); _Hash.Add(CONST_COMMON.ClientInfo, _ClientInfo); String _Context = MetaDataInfo.GetClientMetaData <Hashtable>(_Hash); Response.Write(_Context); }
/// <summary> /// 初始化操作 /// </summary> /// <param name="metaData">参数</param> public void InitLoad(CtrlPlatformCommandInfo metaData) { _InitLoadParameter = metaData; _MetaDataInfo = metaData.MetaDataInfo; _ControlInfo = metaData.ControlInfo; //-->调用子控件的 InitLoad方法 InitChildControl(_MetaDataInfo); GetInitValue(ConstantCollection.COMPOSITE_CONTROL_INIT_LOAD); this._NotifyRuntimePage(ConstantCollection.COMPOSITE_CONTROL_INIT_LOAD); }
private void LoadWaitWordInfo(String _CultureType) { _ClientInfo = new ClientInfo(); Hashtable _MetaHash = new Hashtable(); Hashtable _Detail = new Hashtable(); try { String _SysName = base.GetQueryValue("SysName"); String _strPage = base.GetQueryValue("PageNum"); String _strPageSize = base.GetQueryValue("PageSize"); String _strTrans = base.GetQueryValue("IsTrans"); int _Page = 1; int _PageSize = 10; int.TryParse(_strPage, out _Page); int.TryParse(_strPageSize, out _PageSize); Boolean _IsTrans = true; if (String.IsNullOrEmpty(_strTrans) || _strTrans == "0") { _IsTrans = false; } ResxManagerInfo _ResxCtrl = new ResxManagerInfo(); DataSet _DS = null; _DS = _ResxCtrl.GetWaitWordInfo(_SysName, _Page, _PageSize, _CultureType, _IsTrans); _MetaHash.Add("WordInfo", MetaDataInfo.GetListHashData(_DS)); _ClientInfo.Status = true; } catch (Exception ex) { _ClientInfo.Status = false; _ClientInfo.Message = "数据访问失败,请稍候再试!"; } Hashtable _Hash = new Hashtable(); _Hash.Add(CONST_COMMON.ClientInfo, _ClientInfo); _Hash.Add(CONST_COMMON.Meta, _MetaHash); String _Context = MetaDataInfo.GetClientMetaData <Hashtable>(_Hash); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/json"; HttpContext.Current.Response.Write(_Context); HttpContext.Current.Response.End(); }
/// <summary> /// 输出参数 /// </summary> /// <returns></returns> public CtrlPlatformCommandInfo OutputParameter() { var cmd = new CtrlPlatformCommandInfo(); var data = new MetaDataInfo(); data.table_name = this._TableName; foreach (var child in this._Columns) { child.column_value = string.Format("{0}", this.xtn_Data.SelectedItem.GetPropertyValue(child.column_name.ToLower())); } data.Item = this._Columns; cmd.MetaDataInfo = data; return(cmd); }
void XtnSetDataGridConvertColumnDB_Loaded(object sender, RoutedEventArgs e) { _CurrentControlInfo = this.IDesignFramework.GetControlInfoByControlName(this.CurrentSelectedControlName); if (null == _CurrentControlInfo.Convert) { _CurrentControlInfo.Convert = new List <ColumnDBConvertInfo>(); } _XmlTemplate = this.IDesignFramework.GetCurrentXmlTemplate(); _CurrentMetaDataInfo = this.IDesignFramework.GetMetaDataInfoByTableName(_CurrentControlInfo.MetaData); if (null == _CurrentMetaDataInfo) { Wrapper.ShowDialog("请先设置数据源。"); return; } this.xtnDataGridHeader.ItemsSource = _CurrentMetaDataInfo.Item; }
/// <summary> /// 初始化子控件 /// </summary> /// <param name="_MetaDataInfo"></param> void InitChildControl(MetaDataInfo _MetaDataInfo) { List <String> _MegItem = new List <string>(); foreach (var child in _MetaDataInfo.Item) { var controlName = string.Format("{0}_{1}", this.Name, child.column_name); var fe = _IPageRuntime.FindControl(controlName); if (null == fe) { _MegItem.Add(controlName); continue; } if (!_DictControl.ContainsKey(controlName)) { _DictControl.Add(controlName, fe); } //-->判断是否是复件控件 if (fe is ICompositeCtrl) { var icc = fe as ICompositeCtrl; var _newCtrlMetaData = new MetaDataInfo(); _newCtrlMetaData.table_type = _MetaDataInfo.table_type; _newCtrlMetaData.table_name = _MetaDataInfo.table_name; _newCtrlMetaData.table_comment = _MetaDataInfo.table_comment; _newCtrlMetaData.Item = new List <MetaDataColumnInfo>(); _newCtrlMetaData.Item.Add(child); ControlInfo ci = new ControlInfo(); ci.Name = fe.Name; ci.ColumnName = child.column_name; ci.Comment = child.column_comment; ci.ControlType = ConstantCollection.COMPOSITE_CONTROL; ci.Type = fe.GetType().Name; ci.MetaData = _MetaDataInfo.table_name; CtrlPlatformCommandInfo ctrlCmd = new CtrlPlatformCommandInfo(); ctrlCmd.ControlInfo = ci; ctrlCmd.MetaDataInfo = _newCtrlMetaData; icc.InitLoad(ctrlCmd); } } if (0 != _MegItem.Count) { _IPageRuntime.AlertMessage(string.Format("有【{0}】控件在表单上没有找着\r\n{1}", _MegItem.Count, string.Join("\r\n", _MegItem))); } }
/// <summary> /// 输入参数 /// </summary> /// <param name="cmd"></param> public void InputParameter(CtrlPlatformCommandInfo cmd) { if (null == cmd || null == cmd.MetaDataInfo || null == cmd.MetaDataInfo.Item || 0 == cmd.MetaDataInfo.Item.Count) { return; } var mdi = cmd.MetaDataInfo; foreach (var mdci in cmd.MetaDataInfo.Item) { string controlName = string.Format("{0}_{1}", this.Name, mdci.column_name); var fe = this._IPageRuntime.FindControl(controlName); //-->判断是否是复件控件 if (fe is ICompositeCtrl) { var icc = fe as ICompositeCtrl; var _newMdi = new MetaDataInfo(); _newMdi.table_type = mdi.table_type; _newMdi.table_name = mdi.table_name; _newMdi.table_comment = mdi.table_comment; _newMdi.Item = new List <MetaDataColumnInfo>(); _newMdi.Item.Add(mdci); ControlInfo ci = new ControlInfo(); ci.Name = fe.Name; ci.ColumnName = mdci.column_name; ci.Comment = mdci.column_comment; ci.ControlType = ConstantCollection.COMPOSITE_CONTROL; ci.Type = fe.GetType().Name; ci.MetaData = mdi.table_name; CtrlPlatformCommandInfo ctrlCmd = new CtrlPlatformCommandInfo(); ctrlCmd.ControlInfo = ci; ctrlCmd.MetaDataInfo = _newMdi; icc.InputParameter(ctrlCmd); } } this._NotifyRuntimePage(ConstantCollection.COMPOSITE_CONTROL_INPUT_PARAMETER); }
private void SaveResxInfo(String _CultureType) { _ClientInfo = new ClientInfo(); try { String _SysName = base.GetQueryValue("txtSysName"); String _Key = base.GetQueryValue("txtKey"); String _txtWordCN = base.GetQueryValue("txtWordCN"); String _txtWordTW = base.GetQueryValue("txtWordTW"); String _txtWordEN = base.GetQueryValue("txtWordEN"); _ClientInfo.Status = new ResxManagerInfo().AddResxInfo(_Key, _txtWordCN, _txtWordTW, _txtWordEN, "admin", _SysName, _CultureType); if (_ClientInfo.Status) { _ClientInfo.Message = "数据保存成功!"; } else { _ClientInfo.Message = "数据保存失败,请稍候再试!"; } } catch (Exception ex) { _ClientInfo.Status = false; _ClientInfo.Message = "数据访问失败,请稍候再试!"; } Hashtable _Hash = new Hashtable(); _Hash.Add(CONST_COMMON.ClientInfo, _ClientInfo); String _Context = MetaDataInfo.GetClientMetaData <Hashtable>(_Hash); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/json"; HttpContext.Current.Response.Write(_Context); HttpContext.Current.Response.End(); }
private void CheckItemInfo() { _ClientInfo = new ClientInfo(); Hashtable _MetaHash = new Hashtable(); Hashtable _Detail = new Hashtable(); String _SysName = base.GetQueryValue("SysName"); String _Word = base.GetQueryValue("Word").Trim(); DataSet _DS = new ResxManagerInfo().CheckItemInfo(_SysName, _Word); _MetaHash.Add("WordInfo", MetaDataInfo.GetListHashData(_DS)); Hashtable _Hash = new Hashtable(); _Hash.Add(CONST_COMMON.ClientInfo, _ClientInfo); _Hash.Add(CONST_COMMON.Meta, _MetaHash); String _Context = MetaDataInfo.GetClientMetaData <Hashtable>(_Hash); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ContentType = "application/json"; HttpContext.Current.Response.Write(_Context); HttpContext.Current.Response.End(); }
public void ImplicitConversionTest(string url, string version) { var o2p = new O2P() .SetUrl(url) .AddKeyAttribute() .Generate("north.cs") //.SaveCodeTo("north.cs") .SaveMetaDataTo("metanorth.xml"); //implicit conversion MetaDataInfo meta = o2p; //implicit conversion as string Console.WriteLine(o2p); Assert.IsTrue(MatchFileContent("north.cs", o2p)); Assert.IsTrue(MatchFileContent("metanorth.xml", ((MetaDataInfo)o2p).MetaDataAsString)); Assert.IsTrue(((string)o2p).Contains("public class Product")); if (meta.MediaType == Media.Http) { Assert.Greater(meta.ServiceHeader.Count, 1); } else { Assert.AreEqual(meta.ServiceHeader.Count, 0); } Assert.AreEqual(meta.MetaDataVersion, version); Assert.AreEqual(((MetaDataInfo)o2p).MetaDataVersion, version, "metadataversion"); Console.WriteLine(meta.ServiceHeader.DicToString()); //implicit conversion test }
bool UpdateXml() { if (null == metadata_username) { Wrapper.ShowDialog("请选择要关联的用户名字段!"); return(false); } if (null == metadata_password) { Wrapper.ShowDialog("请选择要关联的密码字段!"); return(false); } var fields = xtnTableField.Fields; if (null == fields || 0 == fields.Count) { Wrapper.ShowDialog("字符参数为空"); return(false); } var dt = fields[0]; var mdi = new MetaDataInfo(); //-->克隆出数据。 mdi.Item = fields.CloneList <MetaDataColumnInfo>(); mdi.table_comment = dt.table_comment; mdi.table_name = dt.table_name; mdi.table_type = dt.table_type; foreach (var data in mdi.Item) { data.table_comment = string.Empty; data.table_name = string.Empty; data.table_type = string.Empty; } var xml = IDesignFramework.GetCurrentXmlTemplate(); var ci = IDesignFramework.GetControlInfoByControlName(this.CurrentSelectedControlName); if (null == ci) { Wrapper.ShowDialog("找不着控件信息。"); return(false); } ci.MetaData = ci.MetaData.IsNullOrEmpty() ? _TableName : ci.MetaData; ci.ColumnName = string.Format("{0}|{1}", _UserField, _PasswordField); ci.ControlDataSourceTableName = mdi.table_name; //-->判断tableName是否已经增加了 var old_mdi = IDesignFramework.GetMetaDataInfoByTableName(mdi.table_name); if (null == old_mdi) { xml.MetaDataItem.Add(mdi); } IDesignFramework.UpdateCurrentTemplate(); string value = string.Format("{0}|{1}|{2}", this.xtnTableField.TableName, _UserField, _PasswordField); _EvaluationContent = new XElement("DataAssociated", value); return(true); }
internal Poco(MetaDataInfo metaData, PocoSetting setting) { _setting = setting; MetaData = metaData; }
void child_Closed(object sender, EventArgs e) { var child = (sender as XtnChildWindow); if (true != child.DialogResult) { return; } DBFramework dbf = child.GetControl as DBFramework; var mdi = dbf.GetMetaDataInfo; if (null == mdi || 0 == mdi.Item.Count) { return; } //-->判断tableName是否已经增加了 MetaDataInfo old_mdi = GetMetaDataInfoByTableName(mdi.table_name); if (null == old_mdi) { _XmlTemplate.MetaDataItem.Add(mdi); } //-->增加控件 _XmlTemplate.BaseInfo.SerialNum++; int SerialNum = _XmlTemplate.BaseInfo.SerialNum; double top = 0; double left = 30; double maxWidth = 0; List <String> columns = new List <string>(); List <FrameworkElement> feItem = new List <FrameworkElement>(); Dictionary <String, String> dictTopLeft = new Dictionary <string, string>(); MetaDataInfo ctrlMetaData = new MetaDataInfo(); ctrlMetaData.table_name = mdi.table_name; ctrlMetaData.table_comment = mdi.table_comment; ctrlMetaData.table_type = mdi.table_type; foreach (var ctrl in mdi.Item) { if (!ctrl.IsChoose) { continue; } ctrlMetaData.Item = new List <MetaDataColumnInfo>(); ctrlMetaData.Item.Add(ctrl); var fe = Wrapper.CreateCtrl <FrameworkElement>(ctrl.control_type); string controlName = string.Format("Form{0}_{1}", SerialNum, ctrl.column_name); fe.Name = controlName; this.DesignPage.AddChild(fe, false); feItem.Add(fe); UpdateXaml(fe); UpdateXml(fe, ctrl.column_name, ctrl.column_comment, mdi.table_name, string.Format("Form{0}", SerialNum), ctrlMetaData); double _maxWidth = GetCharWidth(ctrl.column_comment, this.FontSize, this.FontFamily, this.FontWeight); maxWidth = _maxWidth > maxWidth ? _maxWidth : maxWidth; columns.Add(ctrl.column_name); //-->修改期坐标位置 if ((top + 30 + fe.Height + 30) < DesignPage.ActualHeight) { top += 30; } else { top = 30; if ((left + 190) < DesignPage.ActualWidth) { left += 190; } } dictTopLeft.Add(controlName, string.Format("{0};{1}", top, left)); fe.SetValue(Canvas.LeftProperty, left); fe.SetValue(Canvas.TopProperty, top); } foreach (var v in feItem) { if (v is ICompositeCtrl) { (v as ICompositeCtrl).TitleWidth = (int)maxWidth + 1; v.Width = (int)maxWidth + 100 + 1; //-->修改xaml的位置坐标 string t_l = dictTopLeft[v.Name]; string new_value = Wrapper.ModifyAttribute(_XamlTemplate.CanvasTemplate.Children[v.Name], new KeyValuePair <String, Object>[] { new KeyValuePair <String, Object>("Canvas.Top", t_l.Split(';')[0]), new KeyValuePair <String, Object>("Canvas.Left", t_l.Split(';')[1]), new KeyValuePair <String, Object>("Width", v.Width), new KeyValuePair <String, Object>("TitleWidth", (int)maxWidth + 1), }); _XamlTemplate.CanvasTemplate.Children[v.Name] = new_value; } } feItem.Clear(); dictTopLeft.Clear(); //-->创建一个虚拟控件 ControlInfo ci = new ControlInfo(); ci.Name = string.Format("Form{0}", SerialNum); ci.ColumnName = string.Join("|", columns); ci.MetaData = mdi.table_name; ci.Comment = mdi.table_comment; ci.ControlType = ConstantCollection.FORM_PREFIX; ci.ParentCtrlName = "LayoutRoot"; ci.Type = ConstantCollection.FORM_PREFIX;// //ci.ControlDataSourceTableName = mdi.table_name; _XmlTemplate.ControlItem.Add(ci); this.Xaml_Template = _XamlTemplate.ParseXml().ToString(); this.Xml_Template = _XmlTemplate.ParseXml().ToString(); UpdateControlTree(); //-->释放窗体里的资源 child.Closed -= child_Closed; child.Dispose(); }
/// <summary> /// 更新xml文件内容 /// </summary> /// <param name="ui"></param> /// <param name="columnName"></param> /// <param name="comment"></param> /// <param name="tableName"></param> /// <param name="parentCtrlName"></param> /// <param name="mdi"></param> void UpdateXml(FrameworkElement ui, string columnName, string comment, string tableName, string parentCtrlName, MetaDataInfo mdi) { ControlInfo ci = new ControlInfo(); ci.Name = ui.Name; ci.ColumnName = columnName; ci.MetaData = tableName; ci.Comment = comment; ci.Type = ui.GetType().Name; if (!parentCtrlName.IsNullOrEmpty()) { ci.ParentCtrlName = parentCtrlName; } if (ui is ICompositeCtrl) { //-->查找 metadata 里 row里的信息 ci.ControlType = ConstantCollection.COMPOSITE_CONTROL; CtrlPlatformCommandInfo ctrlCmd = new CtrlPlatformCommandInfo(); ctrlCmd.MetaDataInfo = mdi; ctrlCmd.ControlInfo = ci; (ui as ICompositeCtrl).InitTitle(ctrlCmd); } _XmlTemplate.ControlItem.Add(ci); }
void Xaml_LostFocus(string orgValue, string changeXaml) { if (changeXaml.IsNullOrEmpty() || changeXaml.Equals(orgValue)) { return; } //-->判断控件是否可用。 FrameworkElement fe = Wrapper.LoadXaml <FrameworkElement>(changeXaml); if (null == fe) { _XamlTemplate = new XamlTemplate(); this.Xaml_Template = _XamlTemplate.ParseXml().ToString(); return; } XamlTemplate new_xamlTemplate = XamlTemplate.DecodeXml(changeXaml); //-->判断程序集是否有改变 this._XamlTemplate.AssemblyCollection.AddRange(new_xamlTemplate.AssemblyCollection); XamlCanvasTemplate old_Xaml_CanvasTemplate = this._XamlTemplate.CanvasTemplate; //-->判断画布的大小,背景色是否不同 foreach (var cp in new_xamlTemplate.CanvasTemplate.CanvasPropertyDict) { if (old_Xaml_CanvasTemplate.CanvasPropertyDict.ContainsKey(cp.Key)) { if (!old_Xaml_CanvasTemplate.CanvasPropertyDict[cp.Key].Equals(cp.Value)) { //-->内容有改变 old_Xaml_CanvasTemplate.CanvasPropertyDict[cp.Key] = cp.Value; } } else { old_Xaml_CanvasTemplate.CanvasPropertyDict.Add(cp.Key, cp.Value); } } //-->判断控件 foreach (var child in new_xamlTemplate.CanvasTemplate.Children) { FrameworkElement _news_ctrl = fe.FindName(child.Key) as FrameworkElement; ((fe as UserControl).Content as Panel).Children.Remove(_news_ctrl); if (old_Xaml_CanvasTemplate.Children.ContainsKey(child.Key)) { if (!old_Xaml_CanvasTemplate.Children[child.Key].Equals(child.Value)) { //-->删除原来的控件 this.DesignPage.DeleteChilren(child.Key); //-->2、增加新的控件 this.DesignPage.AddChild(_news_ctrl, !_IsOpenPage); DesignPage.UpdateDesignRectangle(_news_ctrl); old_Xaml_CanvasTemplate.Children[child.Key] = child.Value; } continue; } this.DesignPage.AddChild(_news_ctrl, !_IsOpenPage); old_Xaml_CanvasTemplate.Children.Add(child.Key, child.Value); //-->初始一下内容 if (_news_ctrl is ICompositeCtrl) { var ci = _IDesignFramework.GetControlInfoByControlName(_news_ctrl.Name); if (null == ci) { continue; } //-->查找 metadata 里 row里的信息 var ctrlMetaData = _IDesignFramework.GetMetaDataInfoByTableName(ci.MetaData); if (null == ctrlMetaData || null == ctrlMetaData.Item || 0 == ctrlMetaData.Item.Count) { continue; } //--> metaData Column var colXml = ctrlMetaData.Item.Where(p => p.column_name.Equals(ci.ColumnName)).GetFirst <MetaDataColumnInfo>(); if (null == colXml) { continue; } var _newCtrlMetaData = new MetaDataInfo(); _newCtrlMetaData.table_type = ctrlMetaData.table_type; _newCtrlMetaData.table_name = ctrlMetaData.table_name; _newCtrlMetaData.table_comment = ctrlMetaData.table_comment; _newCtrlMetaData.Item = new List <MetaDataColumnInfo>(); _newCtrlMetaData.Item.Add(colXml); CtrlPlatformCommandInfo ctrlCmd = new CtrlPlatformCommandInfo(); ctrlCmd.ControlInfo = ci; ctrlCmd.MetaDataInfo = _newCtrlMetaData; (_news_ctrl as ICompositeCtrl).InitTitle(ctrlCmd); } } //-->如果是高、宽改变了,得修改xml文件信息 this._XmlTemplate.BaseInfo.PageHeight = new_xamlTemplate.Height; this._XmlTemplate.BaseInfo.PageWidth = new_xamlTemplate.Width; _XamlTemplate.Height = new_xamlTemplate.Height; _XamlTemplate.Width = new_xamlTemplate.Width; Xml_Template = _XmlTemplate.ParseXml().ToString(); _XamlTemplate = new_xamlTemplate; this.Xaml_Template = changeXaml; DesignPage.UpdatePropertyGrid(); }
//========================================================================= public List <MetaDataInfo> Variables(string TypeName) { List <MetaDataInfo> Names = new List <MetaDataInfo>(); foreach (string FileName in Dlls(TypeName)) { string DLLFileName = Configuration.RemoveMacros(FileName); string ClassName = ProxyClassName(TypeName, DLLFileName); Type T = GetProbeInfoAssembly().GetType("ModelFramework." + ClassName); if (T != null) { foreach (PropertyInfo Property in T.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public)) { string Description = ""; string Units = ""; foreach (object Attribute in Property.GetCustomAttributes(false)) { if (Attribute.GetType().Name == "Description") { Description = Attribute.ToString(); } if (Attribute.GetType().Name == "Units") { Units = Attribute.ToString(); } } MetaDataInfo Info = new MetaDataInfo(); Info.Name = Property.Name; Info.Description = Description; Info.Units = Units; Info.IsArray = Property.PropertyType.IsArray; Info.IsRecord = (Property.GetType().IsValueType&& !Property.GetType().IsEnum&& !Property.GetType().IsPrimitive&& Property.GetType() != typeof(decimal)); Names.Add(Info); } } else { //attempt to get these details from getDescription() String descr = ""; descr = DLLProber.ProbeDLLForDescriptionXML(ClassName, DLLFileName); if (descr.Length > 0) { TComponentDescrParser comp = new TComponentDescrParser(descr); //need to read all the properties information String propertySDML = comp.firstProperty(); while (propertySDML.Length > 0) { //create a property attribute of this class TCompProperty newProperty; newProperty = new TCompProperty(propertySDML); if ((newProperty.Name.ToLower() != STRSUBEVENT_ARRAY) && (newProperty.Name.ToLower() != STRPUBEVENT_ARRAY) && (newProperty.Name.ToLower() != STRDRIVER_ARRAY)) { MetaDataInfo Info = new MetaDataInfo(); Info.Name = newProperty.Name; Info.Description = "Descr " + newProperty.sDescr; Info.Units = newProperty.InitValue.units(); Info.IsArray = newProperty.InitValue.isArray(); Info.IsRecord = newProperty.InitValue.isRecord(); Names.Add(Info); } propertySDML = comp.nextProperty(); } } } } return(Names); }
//internal Poco(string metaData, string serviceUrl) //{ // MetaDataAsString = metaData; // ServiceUrl = serviceUrl; // //MetaDataVersion = Helper.GetMetadataVersion(metaData); //} internal Poco(MetaDataInfo metaData) { MetaData = metaData; }