using Core.Mes.Client.Comm.Control; using Core.StlMes.Client.Judge.Commons; using Core.StlMes.Client.Judge.Forms; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using System; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Windows.Forms; namespace Core.StlMes.Client.Judge.Controls { public partial class QcmBaseLanguageCtrl : UserControl { private Dal _d; private DataTable dtLanguage; private DataTable dtType; private DataTable dtType2; private DataTable dtType3; private string _languageCode = ""; private string _type = ""; private string _type2 = ""; private string _type3 = ""; public QcmBaseLanguageCtrl(Control container, OpeBase ob, string customInfo) { InitializeComponent(); container.Controls.Add(this); this.Dock = DockStyle.Fill; this.BringToFront(); _d = new Dal(ob); var list1 = new ValueList(); dtLanguage = _d.GetTableByXmlId("QcmBaseLanguageFrm.QueryLanguageC"); foreach (DataRow row in dtLanguage.Rows) { list1.ValueListItems.Add(row["askItemNo"].ToString(), row["askItemDesc"].ToString()); } ultraGrid1.DisplayLayout.Bands[0].Columns["languageCode"].ValueList = list1; var listType = new ValueList(); dtType = _d.GetTableByXmlId("QcmBaseLanguageFrm.QueryTypeC", new object[] { "4101", customInfo.Split(',') }); foreach (DataRow row in dtType.Rows) { listType.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } ultraGrid1.DisplayLayout.Bands[0].Columns["type"].ValueList = listType; dtType2 = _d.GetTableByXmlId("QcmBaseLanguageFrm.QueryTypeC2", new object[] { "4101__" }); dtType3 = _d.GetTableByXmlId("QcmBaseLanguageFrm.QueryTypeC2", new object[] { "4101____" }); } public DataTable dt { get { return dataTable2; } } public void Copy(string LanguageCode, string LanguageName, string L2, string L1) { DataTable dt = _d.GetTableByXmlId("QcmBaseLanguageFrm.Copy", LanguageCode, LanguageName, L2, L1); GridHelper.CopyDataToDatatable(dt, dataTable2, false); } public void Query(string LanguageCode, string type, string type2, string type3, bool flag, string customInfo) { _languageCode = LanguageCode; _type = type; _type2 = type2; _type3 = type3; if (flag) { DataTable dt = _d.GetTableByXmlId("QcmBaseLanguageFrm.QueryAll", new object[] { LanguageCode, type, type2, type3, customInfo.Split(',') }); GridHelper.CopyDataToDatatable(dt, dataTable2, true); } else { DataTable dt = _d.GetTableByXmlId("QcmBaseLanguageFrm.Query", new object[] { LanguageCode, type, type2, type3, customInfo.Split(',') }); GridHelper.CopyDataToDatatable(dt, dataTable2, true); } } public void OnKeyAdd(string LanguageCode, string Type, string Type2, string Type3) { DataTable dt = _d.GetTableByXmlId("QcmBaseLanguageFrm.OnKeyAdd", LanguageCode, Type, Type2, Type3); dataTable2.Rows.Clear(); GridHelper.CopyDataToDatatable(dt, dataTable2, true); } private void ultraGrid1_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e) { } private void ultraGrid1_CellChange(object sender, CellEventArgs e) { ultraGrid1.UpdateData(); if (e.Cell.Column.Key != "CHK") e.Cell.Row.Cells["CHK"].Value = true; if (e.Cell.Column.Key == "type") { string type = e.Cell.Value.ToString2(); var list = new ValueList(); foreach (DataRow row in dtType2.AsEnumerable().Where(p => !string.IsNullOrWhiteSpace(type) && p["basecode"].ToString2().StartsWith(type))) { list.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } e.Cell.Row.Cells["type2"].ValueList = list; e.Cell.Row.Cells["type2"].Value = ""; } if (e.Cell.Column.Key == "type2") { string type2 = e.Cell.Value.ToString2(); var list2 = new ValueList(); foreach (DataRow row in dtType3.AsEnumerable().Where(p => !string.IsNullOrWhiteSpace(type2) && p["basecode"].ToString2().StartsWith(type2))) { list2.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } e.Cell.Row.Cells["type3"].ValueList = list2; e.Cell.Row.Cells["type3"].Value = ""; } if (e.Cell.Text == "") { e.Cell.Appearance.BackColor = Color.Red; } else { e.Cell.Appearance.ResetBackColor(); } } private void uteTransfer_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e) { using (PopupTextBox PopupTextBox = new PopupTextBox(ultraGrid1.ActiveCell.Text, 4000)) { if (PopupTextBox.ShowDialog() == DialogResult.OK) { ultraGrid1.ActiveCell.Value = PopupTextBox.TextInfo; if (ultraGrid1.ActiveCell.Text == "") { ultraGrid1.ActiveCell.Appearance.BackColor = Color.Red; } else { ultraGrid1.ActiveCell.Appearance.ResetBackColor(); } } } } public void Export(string Name) { try { Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter ulGridExt = new Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter(); ulGridExt.CellExporting += new Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventHandler(ultraGridExcelExporter1_CellExporting); System.Windows.Forms.SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.FileName = Name + DateTime.Now.ToString("yyMMdd") + ".xls"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { string sFullName = saveFileDialog1.FileName; ulGridExt.Export(ultraGrid1, sFullName); ProcessStartInfo p = new ProcessStartInfo(sFullName) { WorkingDirectory = Path.GetDirectoryName(sFullName) }; Process.Start(p); } } catch (Exception ex) { MessageBox.Show("导出失败,原因:" + ex.Message); } } public static void ultraGridExcelExporter1_CellExporting(object sender, Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventArgs e) { try { if (e.GridColumn.RowLayoutColumnInfo.LabelPosition == Infragistics.Win.UltraWinGrid.LabelPosition.LabelOnly) { e.Cancel = true; } } catch { } } /// /// 将excel文件内容读取到DataTable数据表中 /// /// DataTable数据表 public void ReadExcelToDataTable(string fileName) { //定义要返回的datatable对象 DataTable ds = new DataTable(); //excel工作表 //NPOI.SS.UserModel.ISheet sheet = null; //数据开始行(排除标题行) int startRow = 0; try { if (!File.Exists(fileName)) { return; } dataTable2.Rows.Clear(); //根据指定路径读取文件 FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); //根据文件流创建excel数据结构 NPOI.SS.UserModel.IWorkbook workbook = NPOI.SS.UserModel.WorkbookFactory.Create(fs); //IWorkbook workbook = new HSSFWorkbook(fs); for (int k = 0; k < workbook.NumberOfSheets; k++) { NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(k); if (sheet != null) { NPOI.SS.UserModel.IRow firstRow = sheet.GetRow(0); startRow = sheet.FirstRowNum; //最后一列的标号 int rowCount = sheet.LastRowNum; for (int i = startRow + 1; i <= rowCount; ++i) { NPOI.SS.UserModel.IRow row = sheet.GetRow(i); if (row == null) continue; //没有数据的行默认是null        DataRow dataRow = dataTable2.NewRow(); for (int j = 0; j < 10; j++) { string Name = sheet.GetRow(startRow).GetCell(j).ToString2(); string Value = row.GetCell(j).ToString2(); if (Name.Trim() == "语言") { var list = dtLanguage.AsEnumerable() .Where(p => p["askItemDesc"].ToString3() == Value) .ToList(); if (list.Any()) { dataRow["languageCode"] = list[0]["askItemNo"].ToString2(); } } if (Name.Trim() == "分类") { var list = dtType.AsEnumerable() .Where(p => p["basename"].ToString3() == Value) .ToList(); if (list.Any()) { dataRow["type"] = list[0]["basecode"].ToString2(); } } if (Name.Trim() == "大项") { var list = dtType2.AsEnumerable() .Where(p => p["basename"].ToString3() == Value) .ToList(); if (list.Any()) { dataRow["type2"] = list[0]["basecode"].ToString2(); } } if (Name.Trim() == "小项") { var list = dtType3.AsEnumerable() .Where(p => p["basename"].ToString3() == Value) .ToList(); if (list.Any()) { dataRow["type3"] = list[0]["basecode"].ToString2(); } } if (Name.Trim() == "字段名称") { dataRow["originalValue"] = Value; } if (Name.Trim() == "翻译值") { dataRow["resultValue"] = Value; } if (Name.Trim() == "备注") { dataRow["remark"] = Value; } } if (dataRow["resultValue"].ToString2() != "" && dataRow["resultValue"].ToString2() != "") { dataRow["CHK"] = true; } dataTable2.Rows.Add(dataRow); } } } } catch (Exception ex) { throw ex; } } private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e) { if (e.Row.IsAddRow) return; if (e.Row.Cells["originalValue"].Text.ToString2() == "") { e.Row.Cells["originalValue"].Appearance.BackColor = Color.Red; } if (e.Row.Cells["resultValue"].Text.ToString2() == "") { e.Row.Cells["resultValue"].Appearance.BackColor = Color.Red; } string type = e.Row.Cells["type"].Value.ToString2(); var list = new ValueList(); foreach (DataRow row in dtType2.AsEnumerable().Where(p => !string.IsNullOrWhiteSpace(type) && p["basecode"].ToString2().StartsWith(type))) { list.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } e.Row.Cells["type2"].ValueList = list; string type2 = e.Row.Cells["type2"].Value.ToString2(); var list2 = new ValueList(); foreach (DataRow row in dtType3.AsEnumerable().Where(p => !string.IsNullOrWhiteSpace(type) && p["basecode"].ToString2().StartsWith(type2))) { list2.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } e.Row.Cells["type3"].ValueList = list2; } private void ultraGrid1_AfterRowInsert(object sender, RowEventArgs e) { if (_languageCode != "/") e.Row.Cells["languageCode"].Value = _languageCode; if (_type != "/") e.Row.Cells["type"].Value = _type; var list = new ValueList(); foreach (DataRow row in dtType2.AsEnumerable().Where(p => !string.IsNullOrWhiteSpace(_type) && p["basecode"].ToString2().StartsWith(_type))) { list.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } e.Row.Cells["type2"].ValueList = list; if (_type2 != "/") e.Row.Cells["type2"].Value = _type2; var list2 = new ValueList(); foreach (DataRow row in dtType3.AsEnumerable().Where(p => !string.IsNullOrWhiteSpace(_type2) && p["basecode"].ToString2().StartsWith(_type2))) { list2.ValueListItems.Add(row["basecode"].ToString(), row["basename"].ToString()); } e.Row.Cells["type3"].ValueList = list2; if (_type3 != "/") e.Row.Cells["type3"].Value = _type3; } } }