using DyeingComputer.UserClass; using DyeingComputer.ViewModel; using DyeingComputer.Windows; using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.SQLite; using System.Diagnostics.Eventing.Reader; using System.Linq; using System.Net; using System.Net.NetworkInformation; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using static DyeingComputer.UserClass.SqliteHelper; using static DyeingComputer.Windows.ViewStep; namespace DyeingComputer.View { /// /// ProgramgroupView.xaml 的交互逻辑 /// public partial class ProgramstepsView : UserControl { public ProgramstepsView() { InitializeComponent(); ProgramID = ProgramgroupView.Programgroup_ID; ProgramNAME = ProgramgroupView.Programgroup_Numder; this.p_title.Text = ProgramNAME; Programgroup_sql(); } //private SQLiteHelper SQLiteHelpers = null; //定义数据库 //private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db"; //数据库路径 DataSet sql; //内存数据缓存 string ProgramID; string ProgramNAME; public void Programgroup_sql() { //SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 //SQLiteHelpers.Open(); //打开数据库 string sql_script = "select * from ProgramSteps where ProgramID='" + ProgramID + "' order by Step asc"; if (sql != null) sql.Clear(); //清空缓存 sql = MainWindow.SQLiteHelpers.ExecuteDataSet(sql_script, null); //读取计划表写入缓存 //sql.Tables[0].Rows.Add(datatable_t); DataRow dr = sql.Tables[0].NewRow();//添加表数据 dr["ProgramID"] = ProgramID; dr["Program"] = ProgramNAME; sql.Tables[0].Rows.Add(dr); Dat(); if (sql != null) Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表 //SQLiteHelpers.Close(); //关闭连接 //sql.Clear(); //清除缓存 //System.GC.Collect(); } public void Dat()//行号刷新 { int a = sql.Tables[0].Rows.Count; for (int i = 0; i < a; i++) { DataRow dr = sql.Tables[0].Rows[i]; dr.BeginEdit(); dr["Step"] = i + 1; dr.EndEdit(); } } string Numder = null; string ID = null; string P1, P2, P3, P4, P5; private void Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)//表格选择事件 { int rownum = Grid.SelectedIndex;//获取鼠标选中行并定义变量 if (rownum != -1)//判断鼠标定位是否有效 { ID = (Grid.Columns[2].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第0列, Numder = (Grid.Columns[3].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第1列, P1 = (Grid.Columns[6].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第6列, P2 = (Grid.Columns[7].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第7列, P3 = (Grid.Columns[8].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第8列, P4 = (Grid.Columns[9].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第9列, P5 = (Grid.Columns[10].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第10列, } } private void UserControl_Loaded(object sender, RoutedEventArgs e)//打开页面时的操作 { if (ID == null) ID = sql.Tables[0].Rows.Count.ToString(); Grid.SelectedIndex = StrToInt.To16Convert10(ID)-1; } public static T GetVisualChild(Visual parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child == null) { child = GetVisualChild(v); } if (child != null) { break; } } return child; } /***********/ private void ProgramgroupView_edit_Click(object sender, RoutedEventArgs e)//编辑 { if (string.IsNullOrEmpty(Numder)) { Numder = null; P1 = "0";P2 = "0";P3 = "0";P4 = "0";P5 = "0"; } if (ID == null) ID = sql.Tables[0].Rows.Count.ToString(); ViewStep viewstop = new ViewStep(Numder, sql.Tables[0].Select("STEP = " + ID).First()); viewstop.AddressUpdated += new ViewStep.AddressUpdateHandler(Address_ButtonClicked); viewstop.data = ID; viewstop.ShowDialog(); } private void Address_ButtonClicked(object sender, AddressUpdateEventArgs e)//编辑返回结果 { int i = sql.Tables[0].Rows.Count; int n = StrToInt.To16Convert10(ID); if (i == n) { DataRow dr_ = sql.Tables[0].NewRow();//添加表数据 dr_["ProgramID"] = ProgramID; dr_["Program"] = ProgramNAME; sql.Tables[0].Rows.Add(dr_); Dat(); ID = (n+1).ToString(); } DataRow dr = sql.Tables[0].Rows[n-1]; dr.BeginEdit(); dr["StepID"] = e.StepID; dr["StepName"] = e.StepNAME; dr["ParameterName"] = e.PNAME; dr["Parameter1"] = e.Row_DAT.Field("Parameter1"); dr["Parameter2"] = e.Row_DAT.Field("Parameter2"); dr["Parameter3"] = e.Row_DAT.Field("Parameter3"); dr["Parameter4"] = e.Row_DAT.Field("Parameter4"); dr["Parameter5"] = e.Row_DAT.Field("Parameter5"); dr["Parameter1_S1"] = e.Row_DAT.Field("Parameter1_S1"); dr["Parameter2_S1"] = e.Row_DAT.Field("Parameter2_S1"); dr["Parameter3_S1"] = e.Row_DAT.Field("Parameter3_S1"); dr["Parameter4_S1"] = e.Row_DAT.Field("Parameter4_S1"); dr["Parameter5_S1"] = e.Row_DAT.Field("Parameter5_S1"); dr["Parameter1_S2"] = e.Row_DAT.Field("Parameter1_S2"); dr["Parameter2_S2"] = e.Row_DAT.Field("Parameter2_S2"); dr["Parameter3_S2"] = e.Row_DAT.Field("Parameter3_S2"); dr["Parameter4_S2"] = e.Row_DAT.Field("Parameter4_S2"); dr["Parameter5_S2"] = e.Row_DAT.Field("Parameter5_S2"); dr["Parameter1_S3"] = e.Row_DAT.Field("Parameter1_S3"); dr["Parameter2_S3"] = e.Row_DAT.Field("Parameter2_S3"); dr["Parameter3_S3"] = e.Row_DAT.Field("Parameter3_S3"); dr["Parameter4_S3"] = e.Row_DAT.Field("Parameter4_S3"); dr["Parameter5_S3"] = e.Row_DAT.Field("Parameter5_S3"); dr["StepName_S1"] = e.Row_DAT.Field("StepName_S1"); dr["StepName_S2"] = e.Row_DAT.Field("StepName_S2"); dr["StepName_S3"] = e.Row_DAT.Field("StepName_S3"); dr["StepID_S1"] = e.Row_DAT.Field("StepID_S1"); dr["StepID_S2"] = e.Row_DAT.Field("StepID_S2"); dr["StepID_S3"] = e.Row_DAT.Field("StepID_S3"); dr.EndEdit(); Grid.ItemsSource = sql.Tables[0].DefaultView; } private void ProgramgroupView_Quit_Click(object sender, RoutedEventArgs e)//退出 { this.Visibility = Visibility.Collapsed;//隐藏控件 } private void ProgramgroupView_del_Click(object sender, RoutedEventArgs e)//删除行 { int d = 0; int a = sql.Tables[0].Rows.Count; if (ID != null) { d = StrToInt.To16Convert10(ID); } else { return; } if (a != d)//如果删除不是最后一行执行 { sql.Tables[0].Rows.RemoveAt(d - 1); Dat(); Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表 } } private void ProgramgroupView_Insert_Click(object sender, RoutedEventArgs e)//插入行 { int d = 0; if (ID != null) { d = StrToInt.To16Convert10(ID); } else { return; } DataRow dr = sql.Tables[0].NewRow();//添加表数据 dr["ProgramID"] = ProgramID; dr["Program"] = ProgramNAME; dr["Parameter1"] = 0; dr["Parameter2"] = 0; dr["Parameter3"] = 0; dr["Parameter4"] = 0; dr["Parameter5"] = 0; dr["Parameter6"] = 0; dr["Parameter7"] = 0; dr["Parameter8"] = 0; dr["Parameter9"] = 0; dr["Parameter10"] = 0; dr["Parameter1_S1"] = 0; dr["Parameter2_S1"] = 0; dr["Parameter3_S1"] = 0; dr["Parameter4_S1"] = 0; dr["Parameter5_S1"] = 0; dr["Parameter1_S2"] = 0; dr["Parameter2_S2"] = 0; dr["Parameter3_S2"] = 0; dr["Parameter4_S2"] = 0; dr["Parameter5_S2"] = 0; dr["Parameter1_S3"] = 0; dr["Parameter2_S3"] = 0; dr["Parameter3_S3"] = 0; dr["Parameter4_S3"] = 0; dr["Parameter5_S3"] = 0; dr["StepName_S1"] = " "; dr["StepName_S2"] = " "; dr["StepName_S3"] = " "; dr["StepID_S1"] = "000"; dr["StepID_S2"] = "000"; dr["StepID_S3"] = "000"; sql.Tables[0].Rows.InsertAt(dr, d - 1); ID = null; Dat(); Grid.ItemsSource = sql.Tables[0].DefaultView; //转换显示计划表 } private void ProgramgroupView_Save_Click(object sender, RoutedEventArgs e)//保存 { int r = 0; //SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径 //SQLiteHelpers.Open(); //打开数据库 MainWindow.SQLiteHelpers.Delete("ProgramSteps", "ProgramID = '" + ProgramID + "'", null); DataTable data_t = new DataTable(); data_t = sql.Tables[0].Clone(); int a = sql.Tables[0].Rows.Count; for (int i = 0; i < a - 1; i++) { data_t.Clear();//清空 DataRow dt = sql.Tables[0].Rows[i];//行转换 DataRow dr = data_t.NewRow(); dr.ItemArray = dt.ItemArray; data_t.Rows.InsertAt(dr, 0); r = MainWindow.SQLiteHelpers.InsertData("ProgramSteps", MainWindow.SQLiteHelpers.DataTableToDictionary(data_t));//行插入 } Dictionary Program_Step = new Dictionary();//缓存函数 Program_Step.Add("Step", a-1); MainWindow.SQLiteHelpers.Update("ProgramName", Program_Step, "ProgramID='" + ProgramID + "'", null); //SQLiteHelpers.Close(); //关闭连接 if (r != 0) { System.Windows.Forms.MessageBox.Show(ProgramNAME, Properties.Resources.Save); this.Visibility = Visibility.Collapsed;//隐藏控件 } } } }