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); }
/// <summary> /// /// </summary> /// <returns></returns> public CtrlPlatformCommandInfo OutputParameter() { var _value = string.Format("BETWEEN '{0}' and '{1}'", ((DateTime)dpBegin.SelectedDate).ToString("yyyy-MM-dd"), ((DateTime)dpEnd.SelectedDate).ToString("yyyy-MM-dd")); if (_value.IsNullOrEmpty()) { return(null); } //-->这个说是用户从控件上添加进来的,所以没有列。 if (_MetaDataInfo.Item.Count == 0) { _MetaDataInfo.Item = new List <MetaDataColumnInfo>(); var col = new MetaDataColumnInfo(); col.column_value = _value; col.column_comment = string.Format("{0}", TextContent); col.column_name = DataSource.Split(',')[1]; col.table_name = DataSource.Split(',')[0]; _MetaDataInfo.Item.Add(col); } else { var mdci = _MetaDataInfo.Item[0]; mdci.column_value = _value; } CtrlPlatformCommandInfo cmd = new CtrlPlatformCommandInfo(); cmd.ParamCollection = _MetaDataInfo.ToXElement(); cmd.MetaDataInfo = new MetaDataInfo(); cmd.MetaDataInfo = _MetaDataInfo; cmd.ControlInfo = _ControlInfo; return(cmd); }
/// <summary> /// /// </summary> /// <returns></returns> public CtrlPlatformCommandInfo OutputParameter() { var _value = string.Format("{0}", this.cbbDropDownList.SelectedItem.GetPropertyValue(this.SourceInfo.SaveField.ToLower())); if (_value.IsNullOrEmpty()) { return(null); } //-->这个说是用户从控件上添加进来的,所以没有列。 if (_MetaDataInfo.Item.Count == 0) { _MetaDataInfo.Item = new List <MetaDataColumnInfo>(); var col = new MetaDataColumnInfo(); col.column_value = _value; col.column_comment = string.Format("{0}", TextContent); col.column_name = SourceInfo.SaveField; col.table_name = SourceInfo.TableName; _MetaDataInfo.Item.Add(col); } else { var mdci = _MetaDataInfo.Item[0]; mdci.column_value = _value; } CtrlPlatformCommandInfo cmd = new CtrlPlatformCommandInfo(); cmd.ParamCollection = _MetaDataInfo.ToXElement(); cmd.MetaDataInfo = new MetaDataInfo(); cmd.MetaDataInfo = _MetaDataInfo; cmd.ControlInfo = _ControlInfo; return(cmd); }
void cbb_SelectionChanged(object sender, SelectionChangedEventArgs e) { MetaDataColumnInfo mdi = dgTable.SelectedItem as MetaDataColumnInfo; if (null == mdi) { return; } ComboBox cbb = sender as ComboBox; ControlConfig cc = cbb.SelectedItem as ControlConfig; if (null == cc) { return; } if (!cc.DataType.IsNullOrEmpty()) { //-->判断数据类型是否匹配 if (cc.DataType.ToLower().Contains(mdi.data_type.ToLower())) { mdi.control_type = cc.Name; } else { Wrapper.ShowDialog("数据类型不匹配,请重新选择!"); } } else { mdi.control_type = cc.Name; } }
static List <MetaDataColumnInfo> RowConvertToColumn(XElement result, string tableName) { XElement root = result.Element(tableName); XElement _table = root.Element("rows"); if (null == _table) { return(null); } //return null; List <MetaDataColumnInfo> datas = new List <MetaDataColumnInfo>(); var rows = _table.FirstNode as XElement; if (null == rows) { return(null); } foreach (var data in rows.Attributes()) { var col = new MetaDataColumnInfo(); col.column_comment = col.column_name = data.Name.LocalName; col.data_type = "varchar"; datas.Add(col); } return(datas); }
void dgTable_LoadingRow(object sender, DataGridRowEventArgs e) { DataGrid dg = sender as DataGrid; MetaDataColumnInfo mdci = e.Row.DataContext as MetaDataColumnInfo; dg.SelectedItem = mdci; ComboBox cbb = dg.Columns[7].GetCellContent(e.Row) as ComboBox; cbb.ItemsSource = _ControlTypeItem; cbb.SelectionChanged += cbb_SelectionChanged; //-->要把当前的数据类型,选项控件。 //-->如果有外键的话,就默认为ComboBox控件 if (!mdci.column_key.IsNullOrEmpty() && mdci.column_key.ToLower().Equals(ConstantCollection.FOREIGN_KEY.ToLower())) { var ci = _ControlTypeItem.Where(p => p.Name.ToLower().Equals(ConstantCollection.CONTROL_COMBOBOX.ToLower())).GetFirst <ControlConfig>(); cbb.SelectedItem = ci; } else { foreach (var ci in _ControlTypeItem) { if (!ci.DataType.IsNullOrEmpty() && ci.DataType.ToLower().Contains(mdci.data_type.ToLower())) { cbb.SelectedItem = ci; break; } } } if (-1 == cbb.SelectedIndex) { cbb.SelectedIndex = 0; } }
void btnBindField_Click(object sender, RoutedEventArgs e) { var item = this.lboxFields.SelectedItem as ListBoxItem; if (null == item) { Wrapper.ShowDialog("请选择要绑定的字段."); return; } _BindColumn = item.Tag as MetaDataColumnInfo; this.txtBindField.Text = item.Content.ToString(); }
void _FillDataGrid(CtrlExecSQLCmd ctrlExecSQLCmd) { var _columns = DynamicallyGeneratedClass.GetDataTableColumnCollection(ctrlExecSQLCmd.Result); if (null == _columns) { this.xtn_Data.ItemsSource = null; return; } if (_columns.Count != _Columns.Count && _columns.Count != this.xtn_Data.Columns.Count) { //-->这里要进行转换 int i = 0; Dictionary <int, MetaDataColumnInfo> _DictData = new Dictionary <int, MetaDataColumnInfo>(); foreach (var xtnCol in this.xtn_Data.Columns) { var dgCol = xtnCol as DataGridTextColumn; var path = dgCol.Binding.Path.Path; var conver = _InitLoadParameter.ControlInfo.Convert.Where(p => p.ColumnName.ToLower().Equals(path.ToLower())).GetFirst <ColumnDBConvertInfo>(); i++; if (null == conver) { continue; } dgCol.Visibility = System.Windows.Visibility.Collapsed; MetaDataColumnInfo col = new MetaDataColumnInfo(); col.column_name = string.Format("{0}_{1}", conver.RelationField, conver.ColumnName).ToLower();// conver.DisplayField; col.column_comment = dgCol.Header.ToString(); col.data_type = "varchar"; _DictData.Add(i, col); i++; } foreach (var dict in _DictData) { var test = this.GetDataGridTextColumn(dict.Value); if (null == test) { continue; } this.xtn_Data.Columns.Insert(dict.Key, test); } } var items = DynamicallyGeneratedClass.ToList(ctrlExecSQLCmd.Result, _columns); this.xtn_Data.ItemsSource = items; }
/// <summary> /// 将数据转成数据类型 /// </summary> /// <param name="mdci"></param> /// <returns></returns> public static string ConvertToDBType(MetaDataColumnInfo mdci) { if (null == mdci || mdci.data_type.IsNullOrEmpty()) { return(""); } switch (mdci.data_type.ToLower()) { case "datetime": case "varchar": return(string.Format("'{0}'", mdci.column_value)); case "int": case "double": case "decimal": return(mdci.column_value.ToString()); //return string.Format("str_to_date('{0}','%Y-%m-%d %h:%i:%s')", mdci.column_value); default: return(string.Format("'{0}'", mdci.column_value)); } }
DataGridTextColumn GetDataGridTextColumn(MetaDataColumnInfo col) { if (null == col) { return(null); } DataGridTextColumn text = new DataGridTextColumn(); text.Header = col.column_comment; text.Binding = new Binding(col.column_name); switch (col.data_type.ToLower()) { case "datetime": text.Binding.StringFormat = "yyyy-MM-dd HH:mm:ss"; //"D";"yyyy-MM-dd HH:mm:ss"; break; case "double": text.Binding.StringFormat = "F2"; break; } return(text); }
/// <summary> /// 解析DataSource信息 /// </summary> /// <param name="value"></param> void DecodeXml(string value) { if (value.IsNullOrEmpty()) { return; } string _value = value; var _data = _value.Split(ConstantCollection.Separator_Sub_section_number); _TableName = _data[0]; if (_data[1].IsNullOrEmpty()) { return; } var _fields = _data[1].Split(','); if (null == _fields || 0 == _fields.Length) { return; } _Columns.Clear(); foreach (var field in _fields) { var _fi = field.Split(ConstantCollection.Separator_Wavy_line); var column = new MetaDataColumnInfo(); column.data_type = _fi[2]; column.column_name = _fi[1].ToLower(); column.column_comment = _fi[0]; _FieldItem.Add(column.column_name); _Columns.Add(column); } var rn = new MetaDataColumnInfo(); rn.data_type = "int"; rn.column_name = "rn"; rn.column_comment = "序号"; _FieldItem.Insert(0, rn.column_name); _Columns.Insert(0, rn); }
void SetParametSelected(ParameterSelected ps, MetaDataColumnInfo mdci) { if (null == ps || null == mdci) { return; } ps.Text = mdci.column_comment; ps.TargetMetaDataColumn = mdci; if (null == cbbCtrl.SelectedItem) { ps.OrgCtrlInfo = _CurrentControlInfo; ps.TargetCtrlName = this.EventControlName; } else { var ci = cbbCtrl.SelectedItem as ControlInfo; ps.OrgCtrlInfo = ci; ps.TargetCtrlName = ci.Name; } //-->这个还要进一步确定一下。 var item = this.lbCtrls.SelectedItem as ListBoxItemExtend; ps.OrgIsDataSource = item.ControlInfo.ControlDataSourceTableName.IsNotEmpty() ? true : false; }
/// <summary> /// 将数据转成数据类型[值带'='号] /// </summary> /// <param name="mdci"></param> /// <returns></returns> public static string ConvertToDBTypeWhereUsing(MetaDataColumnInfo mdci) { if (null == mdci || mdci.data_type.IsNullOrEmpty()) { return(""); } switch (mdci.data_type.ToLower()) { case "datetime": case "varchar": if (mdci.column_value.IsNotEmpty()) { //BETWEEN if (mdci.column_value.Trim().Length > 7) { var subStr = mdci.column_value.Trim().Substring(0, 7).ToLower(); if (subStr.Equals("BETWEEN".ToLower())) { return(mdci.column_value); } } return(string.Format("='{0}'", mdci.column_value)); } //return string.Format("='{0}'", mdci.column_value); return(""); case "int": case "double": case "decimal": //return string.Format("={0}", mdci.column_value); if (mdci.column_value.IsNotEmpty()) { //BETWEEN if (mdci.column_value.Trim().Length > 7) { var subStr = mdci.column_value.Trim().Substring(0, 7).ToLower(); if (subStr.Equals("BETWEEN".ToLower())) { return(mdci.column_value); } } return(string.Format("={0}", mdci.column_value)); } return("0"); //return string.Format("str_to_date('{0}','%Y-%m-%d %h:%i:%s')", mdci.column_value); default: //return string.Format("='{0}'", mdci.column_value); if (mdci.column_value.IsNotEmpty()) { //BETWEEN if (mdci.column_value.Trim().Length > 7) { var subStr = mdci.column_value.Trim().Substring(0, 7).ToLower(); if (subStr.Equals("BETWEEN".ToLower())) { return(mdci.column_value); } } return(string.Format("='{0}'", mdci.column_value)); } //return string.Format("='{0}'", mdci.column_value); return(""); } }
CtrlPlatformCommandInfo GetCtrlPlatformCommandInfo(ControlActivityInfo child, string controlName) { CtrlPlatformCommandInfo cmd = new CtrlPlatformCommandInfo(); if (null == child.Param || 0 == child.Param.Count) { var ci = GetControlInfoByControlName(controlName); var mdi = GetMetaDataInfoByTableName(ci.MetaData); if (null == mdi || null == mdi.Item || 0 == mdi.Item.Count || ci.ColumnName.IsNullOrEmpty()) { return(new CtrlPlatformCommandInfo()); } var mdci = mdi.Item.Where(p => p.column_name.Equals(ci.ColumnName)).GetFirst <MetaDataColumnInfo>(); MetaDataInfo _newCtrlMetaData = new MetaDataInfo(); _newCtrlMetaData.table_type = mdi.table_type; _newCtrlMetaData.table_name = mdi.table_name; _newCtrlMetaData.table_comment = mdi.table_comment; _newCtrlMetaData.Item = new List <MetaDataColumnInfo>(); _newCtrlMetaData.Item.Add(mdci); cmd.MetaDataInfo = _newCtrlMetaData; cmd.ControlInfo = ci; } else { cmd.MetaDataInfo = new MetaDataInfo(); cmd.MetaDataInfo.Item = new List <MetaDataColumnInfo>(); //-->获取控件信息 var ci = GetControlInfoByControlName(child.ControlName); Dictionary <String, CtrlPlatformCommandInfo> _DictCtrlParam = new Dictionary <string, CtrlPlatformCommandInfo>(); foreach (var item in child.Param) { var _newMdci = new MetaDataColumnInfo(); //-->表的名称 string tableName = item.OrgIsDataSource ? ci.ControlDataSourceTableName : ci.MetaData; var mdi = GetMetaDataInfoByTableName(tableName); //-->列的名称 string columnName = item.OrgFieldName; //if (item.OrgIsDataSource && // !item.OrgFieldName.Equals(ci.ColumnName) && // ci.ColumnName.Split('|').Length == 1 // ) //{ // columnName = ci.ColumnName; //} var mdci = mdi.Item.Where(p => p.column_name.Equals(columnName)).GetFirst <MetaDataColumnInfo>(); if (null == mdci) { continue; } //--------------上面有问题---------- _newMdci = mdci.Clone <MetaDataColumnInfo>(); CtrlPlatformCommandInfo op = null; if (!_DictCtrlParam.ContainsKey(item.TargetCtrlName)) { var icc = this.FindControl(item.TargetCtrlName) as ICompositeCtrl; if (null == icc) { continue; } op = icc.OutputParameter(); _DictCtrlParam.Add(item.TargetCtrlName, op); } else { op = _DictCtrlParam[item.TargetCtrlName]; } if (null == op || null == op.MetaDataInfo || null == op.MetaDataInfo.Item || 0 == op.MetaDataInfo.Item.Count) { continue; } var _mdci = op.MetaDataInfo.Item.Where(p => p.column_name.IsNotEmpty() && p.column_name.ToLower().Equals(item.TargetFieldName.ToLower()) ).GetFirst <MetaDataColumnInfo>(); if (null == _mdci) { continue; } _newMdci.column_value = _mdci.column_value; _newMdci.table_comment = mdi.table_comment; _newMdci.table_name = mdi.table_name; _newMdci.table_type = mdi.table_type; cmd.MetaDataInfo.Item.Add(_newMdci); } cmd.ControlInfo = ci; } return(cmd); }
/// <summary> /// 获取属性类 /// </summary> /// <param name="pair"></param> /// <returns></returns> static Type GetPropertyType(MetaDataColumnInfo pair) { if (null == pair || pair.data_type.IsNullOrEmpty()) { return(typeof(object)); } switch (pair.data_type.ToLower()) { case "varchar": case "char": return(typeof(String)); //tinyint(size) -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 //smallint(size) -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。 //mediumint(size) -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 //int(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 //bigint(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 //float(size,d) 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 //double(size,d) 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 //decimal(size,d) 作为字符串存储的 double 类型,允许固定的小数点。 case "tinyint": return(typeof(byte)); case "smallint": return(typeof(Int16)); case "int": case "int32": case "bigint": case "mediumint": return(typeof(Int32)); case "float": return(typeof(float)); case "double": return(typeof(double)); case "decimal": return(typeof(decimal)); //11.4.1. CHAR和VARCHAR类型 //11.4.2. BINARY和VARBINARY类型 //11.4.3. BLOB和TEXT类型 case "binary": case "varbinary": case "blob": case "text": return(typeof(byte[])); //11.3.1. DATETIME、DATE和TIMESTAMP类型 //11.3.2. TIME类型 //11.3.3. YEAR类型 case "datetime": case "date": case "time": case "timestamp": case "year": return(typeof(DateTime)); default: return(typeof(String)); } }