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;
}
}
}