using DyeingComputer.UserClass;
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 = 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;
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列,
}
}
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(ID == null) ID = sql.Tables[0].Rows.Count.ToString();
ViewStep viewstop = new ViewStep();
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.P1;
dr["Parameter2"] = e.P2;
dr["Parameter3"] = e.P3;
dr["Parameter4"] = e.P4;
dr["Parameter5"] = e.P5;
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;
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(); //打开数据库
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 = SQLiteHelpers.InsertData("ProgramSteps", SQLiteHelpers.DataTableToDictionary(data_t));//行插入
}
Dictionary Program_Step = new Dictionary();//缓存函数
Program_Step.Add("Step", a-1);
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;//隐藏控件
}
}
}
}