public FrmModField(StdFieldInfo stdFieldInfo, List <StdFieldInfo> lstDataTypeInfo) { InitializeComponent(); this._beforemodstdFieldInfo = stdFieldInfo; this._lstDataTypeInfo = lstDataTypeInfo; InitView(); }
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; }
/// <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; }
/// <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; }
/// <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(); }
/// <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(); }
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(); } }
/// <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(); } } }
/// <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(); } }
/// <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(); }
/// <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; }
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(); }