using Microsoft.Win32; using System; using System.Collections.Generic; using System.Data; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using XCommon.Log; using XCore; using XHandler.Class; using XHandler.Class.DataEx; using XImagingXhandler.XDAL; namespace XHandler.View.MethodProperty { /// /// DataImportProperty.xaml 的交互逻辑 /// public partial class DataImportProperty : UserControl { TransferFileBll transferFileBll = new TransferFileBll(); public MethodDataImport methodDataImport { get; set; } public MethodDataImport currmethodDataImport = null; #region 全局属性变量 string isrun = ""; string status = ""; string name = ""; string label = ""; string filePath = ""; int beginLine = 0; DataTable transferDataTable = new DataTable(); string sourceLabware = ""; string sourceWell = ""; string sourceLabwareCode = ""; string destVolume = ""; int mark = 0; #endregion public DataImportProperty() { InitializeComponent(); } public DataImportProperty(MethodEx method) { InitializeComponent(); mark = 0; methodDataImport = new MethodDataImport(); methodDataImport.name = method.method_name; methodDataImport.label = method.method_name; this.DataContext = methodDataImport; if (method.tag != null) { methodDataImport = (MethodDataImport)method.tag; currmethodDataImport = methodDataImport; isrun = methodDataImport.isrun; status = methodDataImport.status; name = methodDataImport.name; label = methodDataImport.label; filePath = methodDataImport.filePath; beginLine = methodDataImport.beginLine; transferDataTable = methodDataImport.transferDataTable; sourceLabware = methodDataImport.sourceLabware; sourceWell = methodDataImport.sourceWell; sourceLabwareCode = methodDataImport.sourceLabwareCode; destVolume = methodDataImport.destVolume; } } #region 选择文件 private void btnSelectFile_Click(object sender, RoutedEventArgs e) { OpenFileDialog dlg = new OpenFileDialog(); dlg.Title = "请选择Excel文件"; dlg.FileName = string.Empty; dlg.FilterIndex = 1; dlg.RestoreDirectory = true; dlg.Filter = "excel files(*.xls)|*.xls|csv files(*.csv)|*.csv|All files(*.*)|*.*"; dlg.Multiselect = false; if (!string.IsNullOrEmpty(tbExcelFile.Text.Trim())) { if (System.IO.Path.HasExtension(tbExcelFile.Text.Trim())) dlg.InitialDirectory = System.IO.Path.GetDirectoryName(tbExcelFile.Text.Trim()); else dlg.InitialDirectory = tbExcelFile.Text.Trim(); } if (dlg.ShowDialog() == true) { string fullPath = dlg.FileName; tbExcelFile.Text = fullPath; if (methodDataImport != null) { methodDataImport.filePath = fullPath; } SelectFile(fullPath); } } private void tbExcelFile_PreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Enter) { if (!string.IsNullOrEmpty(tbExcelFile.Text.Trim())) { if (System.IO.Path.HasExtension(tbExcelFile.Text.Trim())) { if (System.IO.File.Exists(tbExcelFile.Text.Trim())) { SelectFile(tbExcelFile.Text.Trim()); } } } } } private void SelectFile(string file) { string ext = System.IO.Path.GetExtension(file); DataTable transferData = null; if (string.Compare(ext, ".csv", true) == 0) transferData = ExcelAndCsvHelper.GetDataTableFromCsvFile(file); else transferData = ExcelAndCsvHelper.GetDataTableFromExcelFile(file, true); if (transferData != null) { if (methodDataImport != null) { methodDataImport.transferDataTable = transferData; } dgTransferFileData.ItemsSource = transferData.DefaultView; List transferFileHeaders = transferFileBll.GetTransferFileHeaders(transferData); cbSourceBoardCode.ItemsSource = transferFileHeaders; cbSourceBoard.ItemsSource = transferFileHeaders; cbSourceWell.ItemsSource = transferFileHeaders; cbVolumn.ItemsSource = transferFileHeaders; } } #endregion private void tbxCommandName_TextChanged(object sender, TextChangedEventArgs e) { try { if (string.IsNullOrEmpty(tbxCommandName.Text)) { xcError.Text = "命令名称不能为空"; return; } else { xcError.Text = ""; } if (methodDataImport != null) { methodDataImport.name = tbxCommandName.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void tbExcelFile_TextChanged(object sender, TextChangedEventArgs e) { try { if (methodDataImport != null) { methodDataImport.filePath = tbExcelFile.Text; } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void tbxbeginLine_TextChanged(object sender, TextChangedEventArgs e) { try { if (!Regex.IsMatch(tbxbeginLine.Text, @"^[0-9]\d*$")) { blError.Text = "请输入正整数"; return; } else { blError.Text = ""; } if (methodDataImport != null) { methodDataImport.beginLine = Convert.ToInt32(tbxbeginLine.Text); } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void cbSourceBoardCode_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbSourceBoardCode.SelectedItem != null) { TransferFileHeader transferFileHeader = cbSourceBoardCode.SelectedItem as TransferFileHeader; if (methodDataImport != null) { methodDataImport.sourceLabwareCode = transferFileHeader.header_name.ToString(); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void cbSourceBoard_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbSourceBoard.SelectedItem != null) { TransferFileHeader transferFileHeader = cbSourceBoard.SelectedItem as TransferFileHeader; if (methodDataImport != null) { methodDataImport.sourceLabware = transferFileHeader.header_name.ToString(); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void cbSourceWell_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbSourceWell.SelectedItem != null) { TransferFileHeader transferFileHeader = cbSourceWell.SelectedItem as TransferFileHeader; if (methodDataImport != null) { methodDataImport.sourceWell = transferFileHeader.header_name.ToString(); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void cbVolumn_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (cbVolumn.SelectedItem != null) { TransferFileHeader transferFileHeader = cbVolumn.SelectedItem as TransferFileHeader; if (methodDataImport != null) { methodDataImport.destVolume = transferFileHeader.header_name.ToString(); } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } private void UserControl_Loaded(object sender, RoutedEventArgs e) { mark += 1; try { if (mark > 1) { return; } if (!string.IsNullOrEmpty(filePath)) { tbxCommandName.Text = name; dgTransferFileData.ItemsSource = transferDataTable.DefaultView; tbExcelFile.Text = filePath; //更新所有下拉列表 List transferFileHeaders = transferFileBll.GetTransferFileHeaders(transferDataTable); cbSourceBoard.ItemsSource = transferFileHeaders; cbSourceWell.ItemsSource = transferFileHeaders; cbVolumn.ItemsSource = transferFileHeaders; cbSourceBoardCode.ItemsSource = transferFileHeaders; //if (methodTransferFile.transferDataTable.Columns.Count >= 5) //{ cbSourceBoard.Text = sourceLabware; cbSourceWell.Text = sourceWell; cbVolumn.Text = destVolume.ToString(); cbSourceBoardCode.Text = sourceLabwareCode; if (currmethodDataImport != null) { methodDataImport = currmethodDataImport; } } else { if (currmethodDataImport != null) { methodDataImport = currmethodDataImport; } } } catch (Exception ex) { LoggerHelper.ErrorLog("ERROR:", ex); } } } }