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);
        }
示例#3
0
        /// <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;
        }
示例#9
0
        /// <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));
            }
        }
示例#10
0
        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);
        }
示例#11
0
        /// <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;
        }
示例#13
0
        /// <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));
            }
        }