Пример #1
0
        public FrmModField(StdFieldInfo stdFieldInfo, List <StdFieldInfo> lstDataTypeInfo)
        {
            InitializeComponent();

            this._beforemodstdFieldInfo = stdFieldInfo;
            this._lstDataTypeInfo       = lstDataTypeInfo;

            InitView();
        }
Пример #2
0
        private void gridView1_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            if (string.IsNullOrEmpty((gridView1.GetFocusedRow() as StdFieldInfo).GUID) && (gridView1.FocusedRowHandle + 1 == gridView1.RowCount))
            {
                btnAdd_Click(null, null);
            }

            tmpstdFieldInfo = gridView1.GetRow(e.RowHandle) as StdFieldInfo;
        }
Пример #3
0
        /// <summary>
        /// 下移
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMoveDown_Click(object sender, EventArgs e)
        {
            if (gridView1.FocusedRowHandle == (gridView1.RowCount - 2))
            {
                return;
            }

            StdFieldInfo cudataTypeInfo   = gridView1.GetFocusedRow() as StdFieldInfo;
            StdFieldInfo nextdataTypeInfo = gridView1.GetRow(gridView1.FocusedRowHandle + 1) as StdFieldInfo;

            // 深拷贝
            StdFieldInfo tmpdataTypeInfo = new StdFieldInfo();

            tmpdataTypeInfo.GUID        = cudataTypeInfo.GUID;
            tmpdataTypeInfo.Name        = cudataTypeInfo.Name;
            tmpdataTypeInfo.ChineseName = cudataTypeInfo.ChineseName;
            tmpdataTypeInfo.DataType    = cudataTypeInfo.DataType;
            tmpdataTypeInfo.DictNo      = cudataTypeInfo.DictNo;
            tmpdataTypeInfo.Remark      = cudataTypeInfo.Remark;
            tmpdataTypeInfo.lstInfo     = cudataTypeInfo.lstInfo;

            // 更新内容
            cudataTypeInfo.GUID        = nextdataTypeInfo.GUID;
            cudataTypeInfo.Name        = nextdataTypeInfo.Name;
            cudataTypeInfo.ChineseName = nextdataTypeInfo.ChineseName;
            cudataTypeInfo.DataType    = nextdataTypeInfo.DataType;
            cudataTypeInfo.DictNo      = nextdataTypeInfo.DictNo;
            cudataTypeInfo.Remark      = nextdataTypeInfo.Remark;
            cudataTypeInfo.lstInfo     = nextdataTypeInfo.lstInfo;

            nextdataTypeInfo.GUID        = tmpdataTypeInfo.GUID;
            nextdataTypeInfo.Name        = tmpdataTypeInfo.Name;
            nextdataTypeInfo.ChineseName = tmpdataTypeInfo.ChineseName;
            nextdataTypeInfo.DataType    = tmpdataTypeInfo.DataType;
            nextdataTypeInfo.DictNo      = tmpdataTypeInfo.DictNo;
            nextdataTypeInfo.Remark      = tmpdataTypeInfo.Remark;
            nextdataTypeInfo.lstInfo     = tmpdataTypeInfo.lstInfo;

            // 更细XML内容
            string cuXMLStr  = xmlhelper.ReadInnerXML("datatype/dataitem/item[@guid=\"" + cudataTypeInfo.GUID + "\"]");
            string preXMLStr = xmlhelper.ReadInnerXML("datatype/dataitem/item[@guid=\"" + nextdataTypeInfo.GUID + "\"]");

            xmlhelper.Replace("datatype/dataitem/item[@guid=\"" + cudataTypeInfo.GUID + "\"]", preXMLStr);
            xmlhelper.Replace("datatype/dataitem/item[@guid=\"" + nextdataTypeInfo.GUID + "\"]", cuXMLStr);
            // 更新GUID
            var cuattribute   = xmlhelper.Read("datatype/dataitem/item[@guid=\"" + cudataTypeInfo.GUID + "\"]").Item(0).ParentNode.Attributes["guid"];
            var nextattribute = xmlhelper.Read("datatype/dataitem/item[@guid=\"" + nextdataTypeInfo.GUID + "\"]").Item(0).ParentNode.Attributes["guid"];

            cuattribute.Value   = nextdataTypeInfo.GUID;
            nextattribute.Value = cudataTypeInfo.GUID;
            xmlhelper.Save(false);

            gridView1.RefreshData();
            gridView1.FocusedRowHandle = gridView1.FocusedRowHandle + 1;
        }
Пример #4
0
        /// <summary>
        /// 上移
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMoveUp_Click(object sender, EventArgs e)
        {
            if (gridView1.FocusedRowHandle == 0)
            {
                return;
            }

            StdFieldInfo cudataTypeInfo  = gridView1.GetFocusedRow() as StdFieldInfo;
            StdFieldInfo predataTypeInfo = gridView1.GetRow(gridView1.FocusedRowHandle - 1) as StdFieldInfo;
            // 深拷贝
            StdFieldInfo tmpdataTypeInfo = new StdFieldInfo();

            tmpdataTypeInfo.Gid         = cudataTypeInfo.Gid;
            tmpdataTypeInfo.Name        = cudataTypeInfo.Name;
            tmpdataTypeInfo.ChineseName = cudataTypeInfo.ChineseName;
            tmpdataTypeInfo.DataType    = cudataTypeInfo.DataType;
            tmpdataTypeInfo.DictNo      = cudataTypeInfo.DictNo;
            tmpdataTypeInfo.Remark      = cudataTypeInfo.Remark;
            tmpdataTypeInfo.lstInfo     = cudataTypeInfo.lstInfo;

            // 更新内容
            cudataTypeInfo.Gid         = predataTypeInfo.Gid;
            cudataTypeInfo.Name        = predataTypeInfo.Name;
            cudataTypeInfo.ChineseName = predataTypeInfo.ChineseName;
            cudataTypeInfo.DataType    = predataTypeInfo.DataType;
            cudataTypeInfo.DictNo      = predataTypeInfo.DictNo;
            cudataTypeInfo.Remark      = predataTypeInfo.Remark;
            cudataTypeInfo.lstInfo     = predataTypeInfo.lstInfo;

            predataTypeInfo.Gid         = tmpdataTypeInfo.Gid;
            predataTypeInfo.Name        = tmpdataTypeInfo.Name;
            predataTypeInfo.ChineseName = tmpdataTypeInfo.ChineseName;
            predataTypeInfo.DataType    = tmpdataTypeInfo.DataType;
            predataTypeInfo.DictNo      = tmpdataTypeInfo.DictNo;
            predataTypeInfo.Remark      = tmpdataTypeInfo.Remark;
            predataTypeInfo.lstInfo     = tmpdataTypeInfo.lstInfo;

            // 更细XML内容
            string cuXMLStr  = xmlhelper.ReadInnerXML("datatype/dataitem/item[@gid=\"" + cudataTypeInfo.Gid + "\"]");
            string preXMLStr = xmlhelper.ReadInnerXML("datatype/dataitem/item[@gid=\"" + predataTypeInfo.Gid + "\"]");

            xmlhelper.Replace("datatype/dataitem/item[@gid=\"" + cudataTypeInfo.Gid + "\"]", preXMLStr);
            xmlhelper.Replace("datatype/dataitem/item[@gid=\"" + predataTypeInfo.Gid + "\"]", cuXMLStr);
            // 更新Gid
            var cuattribute  = xmlhelper.Read("datatype/dataitem/item[@gid=\"" + cudataTypeInfo.Gid + "\"]").Item(0).ParentNode.Attributes["gid"];
            var preattribute = xmlhelper.Read("datatype/dataitem/item[@gid=\"" + predataTypeInfo.Gid + "\"]").Item(0).ParentNode.Attributes["gid"];

            cuattribute.Value  = predataTypeInfo.Gid;
            preattribute.Value = cudataTypeInfo.Gid;
            xmlhelper.Save(false);

            gridView1.RefreshData();
            gridView1.FocusedRowHandle = gridView1.FocusedRowHandle - 1;
        }
Пример #5
0
        /// <summary>
        /// 插入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnInsert_Click(object sender, EventArgs e)
        {
            XmlNodeList xmlNodeLst   = xmlhelper.Read("datatype/dataitem/item[@guid=\"" + (gridView1.GetFocusedRow() as StdFieldInfo).GUID + "\"]");
            var         datatypeInfo = new StdFieldInfo();

            datatypeInfo.GUID    = System.Guid.NewGuid().ToString();
            datatypeInfo.lstInfo = new Dictionary <string, DevExpress.XtraEditors.DXErrorProvider.ErrorInfo>();
            xmlhelper.InsertElement("item", "guid", datatypeInfo.GUID, string.Format(xmlModel, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty), xmlNodeLst.Item(0).ParentNode);
            xmlhelper.Save(false);

            (gridView1.DataSource as List <StdFieldInfo>).Insert(gridView1.FocusedRowHandle, datatypeInfo);
            gridView1.RefreshData();
        }
Пример #6
0
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            var datatypeInfo = new StdFieldInfo();

            datatypeInfo.GUID    = System.Guid.NewGuid().ToString();
            datatypeInfo.lstInfo = new Dictionary <string, DevExpress.XtraEditors.DXErrorProvider.ErrorInfo>();

            xmlhelper.InsertElement("datatype/dataitem", "item", "guid", datatypeInfo.GUID, string.Format(xmlModel, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty));
            xmlhelper.Save(false);

            (gridView1.DataSource as List <StdFieldInfo>).Insert(gridView1.RowCount - 1, datatypeInfo);
            gridView1.RefreshData();
        }
Пример #7
0
        private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
        {
            // xmlhelper.Read("bookstore/book[@ISBN=\"7-111-19149-6\"]") Attributes 的属性
            // xmlhelper.Read("bookstore/book[title=\"计算机硬件技术基础\"]") 内部节点

            XmlNodeList xmlNodeLst = xmlhelper.Read("datatype/dataitem/item[@guid=\"" + tmpstdFieldInfo.GUID + "\"]");
            Int32       idx        = -1;

            switch (e.Column.ToString())
            {
            case "字段名":
                idx = 0;
                break;

            case "字段名称":
                idx = 1;
                break;

            case "字段类型":
                idx = 2;
                break;

            case "字典条目":
                idx = 3;
                break;

            case "说明":
                idx = 4;
                break;
            }

            if (idx == -1)
            {
                return;
            }

            xmlNodeLst.Item(idx).InnerText = e.Value.ToString();
            xmlhelper.Save(false);

            tmpstdFieldInfo = null;

            if (idx == 3 && dictTypeInfoList != null)
            {
                var dictType = dictTypeInfoList.Find(new Predicate <DictInfo>(dictinfo => dictinfo.ID.ToString() == e.Value.ToString()));

                // 找到选中行的GUID值
                (gridView1.GetFocusedRow() as StdFieldInfo).DictNameLst = dictType.Remark;
                gridView1.RefreshData();
            }
        }
Пример #8
0
 /// <summary>
 /// 更新标准字段
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void tsmirealoadcache_Click(object sender, EventArgs e)
 {
     if (gridView1.RowCount > 0 && gridView1.FocusedRowHandle >= 0)
     {
         StdFieldInfo stdFieldInfo = gridView1.GetFocusedRow() as StdFieldInfo;
         if (null != stdFieldInfo)
         {
             // 弹框修改 只支持修改字段英文名、字段中文名、字段长度
             (new FrmModField(stdFieldInfo, gridControl1.DataSource as List <StdFieldInfo>)).ShowDialog();
             // 刷新界面
             xmlhelper = new XmlHelper(@"XML\stdfield.xml");
             BindData();
         }
     }
 }
Пример #9
0
        /// <summary>
        /// 导入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnImport_Click(object sender, EventArgs e)
        {
            string importFile = FileDialogHelper.OpenExcel(false);

            if (!string.IsNullOrEmpty(importFile))
            {
                // 判断文件是否被占用
                if (FileUtil.FileIsUsing(importFile))
                {
                    MessageDxUtil.ShowWarning(string.Format("文件[{0}]被占用,请先关闭文件后再重试!", importFile));
                    return;
                }

                DataTable dt = MyXlsHelper.Import(importFile, "标准字段", 2, 1);

                // 如果没有结果集就不在继续
                if (dt == null)
                {
                    return;
                }

                Int32 addRows = 0;
                for (Int32 i = 0; i < dt.Rows.Count; i++)
                {
                    // 判断是否存在不存在则添加
                    if (!lstName.Contains(dt.Rows[i][0].ToString()))
                    {
                        var datatypeInfo = new StdFieldInfo();
                        datatypeInfo.GUID        = System.Guid.NewGuid().ToString();
                        datatypeInfo.Name        = dt.Rows[i][0].ToString();
                        datatypeInfo.ChineseName = dt.Rows[i][1].ToString();
                        datatypeInfo.DataType    = dt.Rows[i][2].ToString();
                        datatypeInfo.DictNo      = dt.Rows[i][3].ToString();
                        datatypeInfo.Remark      = dt.Rows[i][5].ToString();

                        xmlhelper.InsertElement("datatype/dataitem", "item", "guid", datatypeInfo.GUID, string.Format(xmlModel, dt.Rows[i][0].ToString(), dt.Rows[i][1].ToString(), dt.Rows[i][2].ToString(), dt.Rows[i][3].ToString(), dt.Rows[i][5].ToString()));

                        (gridView1.DataSource as List <StdFieldInfo>).Insert(gridView1.RowCount - 1, datatypeInfo);
                        addRows++;
                        lstName.Add(dt.Rows[i][0].ToString());
                    }
                }
                xmlhelper.Save(false);

                gridView1.RefreshData();
            }
        }
Пример #10
0
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            // 假如在查询去掉查询在新增
            if (!string.IsNullOrEmpty(gridView1.ActiveFilterString))
            {
                gridView1.ActiveFilterString = "";
            }

            var datatypeInfo = new StdFieldInfo();

            datatypeInfo.Gid     = System.Guid.NewGuid().ToString();
            datatypeInfo.lstInfo = new Dictionary <string, DevExpress.XtraEditors.DXErrorProvider.ErrorInfo>();

            xmlhelper.InsertElement("datatype/dataitem", "item", "gid", datatypeInfo.Gid, string.Format(xmlModel, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty));
            xmlhelper.Save(false);

            (gridView1.DataSource as List <StdFieldInfo>).Insert((gridView1.DataSource as List <StdFieldInfo>).Count - 1, datatypeInfo);
            gridView1.RefreshData();
        }
Пример #11
0
        /// <summary>
        /// 绑定数据
        /// </summary>
        private void BindData()
        {
            XmlNodeList         xmlNodeLst       = xmlhelper.Read("datatype/dataitem");
            List <StdFieldInfo> stdfieldInfoList = new List <StdFieldInfo>();

            foreach (XmlNode xn1 in xmlNodeLst)
            {
                StdFieldInfo dataTypeInfo = new StdFieldInfo();
                // 将节点转换为元素,便于得到节点的属性值
                XmlElement xe = (XmlElement)xn1;
                // 得到Type和ISBN两个属性的属性值
                dataTypeInfo.GUID = xe.GetAttribute("guid").ToString();

                // 得到DataTypeInfo节点的所有子节点
                XmlNodeList xnl0 = xe.ChildNodes;
                dataTypeInfo.Name        = xnl0.Item(0).InnerText;
                dataTypeInfo.ChineseName = xnl0.Item(1).InnerText;
                dataTypeInfo.DataType    = xnl0.Item(2).InnerText;
                dataTypeInfo.DictNo      = xnl0.Item(3).InnerText;
                if (dictTypeInfoList != null)
                {
                    var dictType = dictTypeInfoList.Find(new Predicate <DictInfo>(dictinfo => dictinfo.ID.ToString() == dataTypeInfo.DictNo));
                    if (dictType != null)
                    {
                        dataTypeInfo.DictNameLst = dictType.Remark;
                    }
                }
                dataTypeInfo.Remark  = xnl0.Item(4).InnerText;
                dataTypeInfo.lstInfo = new Dictionary <string, DevExpress.XtraEditors.DXErrorProvider.ErrorInfo>();

                stdfieldInfoList.Add(dataTypeInfo);
            }

            // 添加一行空行
            stdfieldInfoList.Add(new StdFieldInfo());
            gridControl1.DataSource = stdfieldInfoList;

            #region 绑定stdType 数据源

            XmlHelper        datatypexmlHelper  = new XmlHelper(@"XML\datatype.xml");
            XmlNodeList      datatypexmlNodeLst = datatypexmlHelper.Read("datatype");
            List <CListItem> dataTypeInfoList   = new List <CListItem>();
            foreach (XmlNode xn1 in datatypexmlNodeLst)
            {
                // 将节点转换为元素,便于得到节点的属性值
                XmlElement xe = (XmlElement)xn1;
                // 得到DataTypeInfo节点的所有子节点
                XmlNodeList xnl0     = xe.ChildNodes;
                CListItem   listItem = new CListItem(xnl0.Item(0).InnerText, string.Format("{0}-{1}", xnl0.Item(0).InnerText, xnl0.Item(1).InnerText));

                dataTypeInfoList.Add(listItem);
            }

            repositoryItemLookUpEditStdType.DataSource = dataTypeInfoList;
            #endregion

            gridView1.Columns["GUID"].Visible    = false;
            gridView1.Columns["lstInfo"].Visible = false;
            gridView1.Columns["DictNameLst"].OptionsColumn.ReadOnly = true;
            gridView1.Columns["DataType"].ColumnEdit = repositoryItemLookUpEditStdType;
        }
Пример #12
0
        private void btnModField_Click(object sender, EventArgs e)
        {
            StdFieldInfo aftermodstdFieldInfo = new StdFieldInfo();

            aftermodstdFieldInfo.Gid         = _beforemodstdFieldInfo.Gid;
            aftermodstdFieldInfo.Name        = txtName.Text.Trim();
            aftermodstdFieldInfo.ChineseName = txtChineseName.Text.Trim();
            aftermodstdFieldInfo.DataType    = lueFieldType.EditValue.ToString();

            StringBuilder content = new StringBuilder();

            #region 检查一下字段是否存在
            foreach (StdFieldInfo dataTypeInfo in _lstDataTypeInfo)
            {
                if (string.IsNullOrEmpty(dataTypeInfo.Gid))
                {
                    continue;
                }

                // 与别的字段重名,不允许修改
                if (string.Equals(aftermodstdFieldInfo.Name, dataTypeInfo.Name) && !string.Equals(_beforemodstdFieldInfo.Name, dataTypeInfo.Name))
                {
                    LogHelper.WriteLog(LogLevel.LOG_LEVEL_ERR, "该标准字段已存在,不允许修改", typeof(FrmModField));
                    MessageDxUtil.ShowWarning("该标准字段已存在,不允许修改");
                    return;
                }
            }
            #endregion

            #region 取project.xml 判断当前数据库
            XmlHelper   xmlprojectthelper = new XmlHelper(@"XML\project.xml");
            XmlNodeList xmlprejectNodeLst = xmlprojectthelper.Read("datatype");

            if (xmlprejectNodeLst.Count == 0)
            {
                return;
            }

            XmlNode xn1project = xmlprejectNodeLst[0];

            // 将节点转换为元素,便于得到节点的属性值
            XmlElement xeproject = (XmlElement)xn1project;

            // 得到DataTypeInfo节点的所有子节点
            XmlNodeList xnl0project = xeproject.ChildNodes;

            string dbType = xnl0project.Item(4).InnerText;
            #endregion

            #region 生成SQL文件
            if (!string.Equals(_beforemodstdFieldInfo.Name, aftermodstdFieldInfo.Name) || !string.Equals(_beforemodstdFieldInfo.DataType, aftermodstdFieldInfo.DataType))
            {
                // SQLServer 修改字段   exec sp_rename '表名.列名','新列名' -- 注意,单引号不可省略。
                // SQLServer 修改字段类型 alter table 表名 alter column 字段名 type not null
                // MySql 修改字段 ALTER TABLE  表名 CHANGE  旧字段名 新字段名 字段类型
                // MySql 修改字段类型 ALTER TABLE  表名 CHANGE  字段名 字段名 新字段类型
                string saveFile = FileDialogHelper.SaveText("更新字段.sql", "C:\\myares\\");
                if (!string.IsNullOrEmpty(saveFile))
                {
                    String[] sqltablefileNames = DirectoryUtil.GetFileNames(@"XML\", "*.table", true);
                    foreach (string tablefileName in sqltablefileNames)
                    {
                        LogHelper.WriteLog(LogLevel.LOG_LEVEL_DEBUG, string.Format("开始变更{0}文件中变更前字段为{1}", tablefileName, _beforemodstdFieldInfo.Name), typeof(FrmModField));
                        XmlHelper xmltablehelper = new XmlHelper(tablefileName);
                        try
                        {
                            XmlNodeList xmlNodeLst = xmltablehelper.Read("datatype/fieldsinfo");
                            for (Int32 i = 0; i < xmlNodeLst.Count; i++)
                            {
                                // 字段变更
                                if (string.Equals(xmlNodeLst[i].ChildNodes.Item(0).InnerText, _beforemodstdFieldInfo.Name) && !string.Equals(_beforemodstdFieldInfo.Name, aftermodstdFieldInfo.Name))
                                {
                                    #region 读取Table.xml 配置信息

                                    XmlHelper   xmltableshelper            = new XmlHelper(@"XML\tables.xml");
                                    XmlNodeList xmlNodeLst22               = xmltableshelper.Read("datatype/tabletype");
                                    Dictionary <string, string> guidGroup  = new Dictionary <string, string>();
                                    Dictionary <string, string> tableGroup = new Dictionary <string, string>();
                                    guidGroup.Clear();
                                    tableGroup.Clear();
                                    foreach (XmlNode xn1 in xmlNodeLst22)
                                    {
                                        // 将节点转换为元素,便于得到节点的属性值
                                        XmlElement xe = (XmlElement)xn1;

                                        // 获取字符串中的英文字母 [a-zA-Z]+
                                        string GroupEnglishName = CRegex.GetText(xe.GetAttribute("name").ToString(), "[a-zA-Z]+", 0);

                                        guidGroup.Add(xe.GetAttribute("gid").ToString(), string.Format("{0}{1}_", Const.TablePre, GroupEnglishName));
                                    }

                                    XmlNodeList xmlNodeLst2 = xmltableshelper.Read("datatype/dataitem");
                                    foreach (XmlNode xn1 in xmlNodeLst2)
                                    {
                                        // 将节点转换为元素,便于得到节点的属性值
                                        XmlElement xe = (XmlElement)xn1;
                                        // 得到Type和ISBN两个属性的属性值

                                        // 得到ConstantInfo节点的所有子节点
                                        XmlNodeList xnl0 = xe.ChildNodes;

                                        tableGroup.Add(xnl0.Item(0).InnerText, guidGroup[xnl0.Item(3).InnerText]);
                                    }
                                    #endregion

                                    string tableName = xmltablehelper.Read("datatype/basicinfo/item/name").Item(0).InnerText;
                                    content.Append(string.Format("exec sp_rename '{0}.{1}','{2}';\r\nGO\r\n\r\n", tableGroup[tableName] + tableName, _beforemodstdFieldInfo.Name, aftermodstdFieldInfo.Name));
                                }

                                if (string.Equals(xmlNodeLst[i].ChildNodes.Item(0).InnerText, _beforemodstdFieldInfo.Name) && !string.Equals(_beforemodstdFieldInfo.DataType, aftermodstdFieldInfo.DataType))
                                {
                                    #region 先读取datatype.xml 在读取defaulttype.xml 然后Linq 查询保存到数据字典dic中
                                    XmlHelper           xmldatatypehelper  = new XmlHelper(@"XML\datatype.xml");
                                    XmlNodeList         xmldatatypeNodeLst = xmldatatypehelper.Read("datatype");
                                    List <DataTypeInfo> dataTypeInfoList   = new List <DataTypeInfo>();
                                    foreach (XmlNode xn1 in xmldatatypeNodeLst)
                                    {
                                        DataTypeInfo dataTypeInfo = new DataTypeInfo();
                                        // 将节点转换为元素,便于得到节点的属性值
                                        XmlElement xe = (XmlElement)xn1;
                                        // 得到Type和ISBN两个属性的属性值
                                        dataTypeInfo.Gid = xe.GetAttribute("gid").ToString();

                                        // 得到DataTypeInfo节点的所有子节点
                                        XmlNodeList xnl0 = xe.ChildNodes;
                                        dataTypeInfo.Name      = xnl0.Item(0).InnerText;
                                        dataTypeInfo.StdType   = xnl0.Item(2).InnerText;
                                        dataTypeInfo.Length    = xnl0.Item(3).InnerText;
                                        dataTypeInfo.Precision = xnl0.Item(4).InnerText;

                                        dataTypeInfoList.Add(dataTypeInfo);
                                    }

                                    XmlHelper   defaulttypexmlHelper  = new XmlHelper(@"XML\defaulttype.xml");
                                    XmlNodeList defaulttypexmlNodeLst = defaulttypexmlHelper.Read("datatype");
                                    Dictionary <string, string> dict  = new Dictionary <string, string>();
                                    foreach (var dataTypeInfo in dataTypeInfoList)
                                    {
                                        foreach (XmlNode xn1 in defaulttypexmlNodeLst)
                                        {
                                            // 将节点转换为元素,便于得到节点的属性值
                                            XmlElement xe = (XmlElement)xn1;
                                            // 得到DataTypeInfo节点的所有子节点
                                            XmlNodeList xnl0  = xe.ChildNodes;
                                            string      value = string.Empty;
                                            if (dbType == "Oracle")
                                            {
                                                value = xnl0.Item(2).InnerText;
                                            }
                                            else if (dbType == "Mysql")
                                            {
                                                value = xnl0.Item(3).InnerText;
                                            }
                                            else if (dbType == "DB2")
                                            {
                                                value = xnl0.Item(4).InnerText;
                                            }
                                            else if (dbType == "SqlServer")
                                            {
                                                value = xnl0.Item(5).InnerText;
                                            }
                                            else if (dbType == "Sqlite")
                                            {
                                                value = xnl0.Item(6).InnerText;
                                            }
                                            else if (dbType == "Access")
                                            {
                                                value = xnl0.Item(7).InnerText;
                                            }

                                            // 找到匹配记录
                                            if (dataTypeInfo.StdType == xnl0.Item(0).InnerText)
                                            {
                                                if (value.Contains("$L"))
                                                {
                                                    if (String.Empty == dataTypeInfo.Length)
                                                    {
                                                        value = value.Replace("$L", "0");
                                                    }
                                                    else
                                                    {
                                                        value = value.Replace("$L", dataTypeInfo.Length);
                                                    }
                                                }
                                                if (value.Contains("$P"))
                                                {
                                                    if (String.Empty == dataTypeInfo.Precision)
                                                    {
                                                        value = value.Replace("$P", "0");
                                                    }
                                                    else
                                                    {
                                                        value = value.Replace("$P", dataTypeInfo.Precision);
                                                    }
                                                }
                                                dict.Add(dataTypeInfo.Name, value);
                                            }
                                        }
                                    }
                                    #endregion

                                    #region 读取Table.xml 配置信息

                                    XmlHelper   xmltableshelper            = new XmlHelper(@"XML\tables.xml");
                                    XmlNodeList xmlNodeLst22               = xmltableshelper.Read("datatype/tabletype");
                                    Dictionary <string, string> guidGroup  = new Dictionary <string, string>();
                                    Dictionary <string, string> tableGroup = new Dictionary <string, string>();
                                    guidGroup.Clear();
                                    tableGroup.Clear();
                                    foreach (XmlNode xn1 in xmlNodeLst22)
                                    {
                                        // 将节点转换为元素,便于得到节点的属性值
                                        XmlElement xe = (XmlElement)xn1;

                                        // 获取字符串中的英文字母 [a-zA-Z]+
                                        string GroupEnglishName = CRegex.GetText(xe.GetAttribute("name").ToString(), "[a-zA-Z]+", 0);

                                        guidGroup.Add(xe.GetAttribute("gid").ToString(), string.Format("{0}{1}_", Const.TablePre, GroupEnglishName));
                                    }

                                    XmlNodeList xmlNodeLst2 = xmltableshelper.Read("datatype/dataitem");
                                    foreach (XmlNode xn1 in xmlNodeLst2)
                                    {
                                        // 将节点转换为元素,便于得到节点的属性值
                                        XmlElement xe = (XmlElement)xn1;
                                        // 得到Type和ISBN两个属性的属性值

                                        // 得到ConstantInfo节点的所有子节点
                                        XmlNodeList xnl0 = xe.ChildNodes;

                                        tableGroup.Add(xnl0.Item(0).InnerText, guidGroup[xnl0.Item(3).InnerText]);
                                    }
                                    #endregion

                                    string tableName = xmltablehelper.Read("datatype/basicinfo/item/name").Item(0).InnerText;
                                    content.Append(string.Format("alter table {0} alter column {1} {2};\r\nGO\r\n\r\n", tableGroup[tableName] + tableName, aftermodstdFieldInfo.Name, dict[aftermodstdFieldInfo.DataType]));
                                }
                            }
                            xmltablehelper.Save(false);
                        }
                        catch (Exception ex)
                        {
                            LogHelper.WriteLog(LogLevel.LOG_LEVEL_CRIT, ex, typeof(FrmModField));
                            MessageDxUtil.ShowError(ex.Message);
                        }
                        LogHelper.WriteLog(LogLevel.LOG_LEVEL_DEBUG, string.Format("结束变更{0}文件中变更前字段为{1}", tablefileName, _beforemodstdFieldInfo.Name), typeof(FrmModField));
                    }

                    FileUtil.WriteText(saveFile, content.ToString(), Encoding.UTF8);

                    if (MessageDxUtil.ShowYesNoAndTips("保存成功,是否打开文件?") == System.Windows.Forms.DialogResult.Yes)
                    {
                        System.Diagnostics.Process.Start(saveFile);
                    }
                }
            }
            #endregion

            #region 修改*.table 字段
            String[] tablefileNames = DirectoryUtil.GetFileNames(@"XML\", "*.table", true);
            foreach (string tablefileName in tablefileNames)
            {
                LogHelper.WriteLog(LogLevel.LOG_LEVEL_DEBUG, string.Format("开始变更{0}文件中变更前字段为{1}", tablefileName, _beforemodstdFieldInfo.Name), typeof(FrmModField));
                XmlHelper xmltablehelper = new XmlHelper(tablefileName);
                try
                {
                    #region 更新数据
                    if (!string.Equals(_beforemodstdFieldInfo.Name, aftermodstdFieldInfo.Name))
                    {
                        XmlNodeList xmlNodeLst = xmltablehelper.Read("datatype/fieldsinfo");
                        for (Int32 i = 0; i < xmlNodeLst.Count; i++)
                        {
                            if (string.Equals(xmlNodeLst[i].ChildNodes.Item(0).InnerText, _beforemodstdFieldInfo.Name))
                            {
                                xmlNodeLst[i].ChildNodes.Item(0).InnerText = aftermodstdFieldInfo.Name;
                            }
                        }
                    }
                    xmltablehelper.Save(false);
                    #endregion
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(LogLevel.LOG_LEVEL_CRIT, ex, typeof(FrmModField));
                    MessageDxUtil.ShowError(ex.Message);
                }
                LogHelper.WriteLog(LogLevel.LOG_LEVEL_DEBUG, string.Format("结束变更{0}文件中变更前字段为{1}", tablefileName, _beforemodstdFieldInfo.Name), typeof(FrmModField));
            }
            #endregion

            #region 修改*.entity 字段
            String[] entityfileNames = DirectoryUtil.GetFileNames(@"XML\", "*.entity", true);
            foreach (string entityfileName in entityfileNames)
            {
                LogHelper.WriteLog(LogLevel.LOG_LEVEL_DEBUG, string.Format("开始变更{0}文件中变更前字段为{1}", entityfileName, _beforemodstdFieldInfo.Name), typeof(FrmModField));
                XmlHelper xmlentityhelper = new XmlHelper(entityfileName);
                try
                {
                    #region 更新数据
                    if (!string.Equals(_beforemodstdFieldInfo.Name, aftermodstdFieldInfo.Name))
                    {
                        XmlNodeList xmlNodeLst = xmlentityhelper.Read("datatype/fieldsinfo");
                        for (Int32 i = 0; i < xmlNodeLst.Count; i++)
                        {
                            if (string.Equals(xmlNodeLst[i].ChildNodes.Item(0).InnerText, _beforemodstdFieldInfo.Name))
                            {
                                xmlNodeLst[i].ChildNodes.Item(0).InnerText = aftermodstdFieldInfo.Name;
                            }
                        }
                    }
                    xmlentityhelper.Save(false);
                    #endregion
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(LogLevel.LOG_LEVEL_CRIT, ex, typeof(FrmModField));
                    MessageDxUtil.ShowError(ex.Message);
                }
                LogHelper.WriteLog(LogLevel.LOG_LEVEL_DEBUG, string.Format("结束变更{0}文件中变更前字段为{1}", entityfileName, _beforemodstdFieldInfo.Name), typeof(FrmModField));
            }
            #endregion

            #region 修改stdfield.xml文件
            XmlHelper xmlstdfieldhelper = new XmlHelper(@"XML\stdfield.xml");
            try
            {
                #region 更新数据
                if (!string.Equals(_beforemodstdFieldInfo.Name, aftermodstdFieldInfo.Name))
                {
                    xmlstdfieldhelper.Replace(string.Format("datatype/dataitem/item[@gid=\"{0}\"]/name", aftermodstdFieldInfo.Gid), aftermodstdFieldInfo.Name);
                }
                if (!string.Equals(_beforemodstdFieldInfo.ChineseName, aftermodstdFieldInfo.ChineseName))
                {
                    xmlstdfieldhelper.Replace(string.Format("datatype/dataitem/item[@gid=\"{0}\"]/chineseName", aftermodstdFieldInfo.Gid), aftermodstdFieldInfo.ChineseName);
                }
                if (!string.Equals(_beforemodstdFieldInfo.DataType, aftermodstdFieldInfo.DataType))
                {
                    xmlstdfieldhelper.Replace(string.Format("datatype/dataitem/item[@gid=\"{0}\"]/datatype", aftermodstdFieldInfo.Gid), aftermodstdFieldInfo.DataType);
                }
                xmlstdfieldhelper.Save(false);
                #endregion
            }
            catch (Exception ex)
            {
                LogHelper.WriteLog(LogLevel.LOG_LEVEL_CRIT, ex, typeof(FrmModField));
                MessageDxUtil.ShowError(ex.Message);
            }
            #endregion



            this.Close();
        }