using DyeingComputer.ViewModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
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.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static DyeingComputer.UserClass.SqliteHelper;
namespace DyeingComputer.View
{
    /// 
    /// SysSetView.xaml 的交互逻辑
    /// 
    public partial class SysSetView : UserControl
    {
        public SysSetView()
        {
            InitializeComponent();
            set_sql();
        }
        private SQLiteHelper SQLiteHelpers = null;  //定义数据库
        private readonly string DBAddress = Environment.CurrentDirectory + "\\DataBase\\800COMPUTER.db";  //数据库路径    
        public void set_sql()
        {
            SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
            SQLiteHelpers.Open();  //打开数据库
            MainWindowViewModel.dt_SysSet = SQLiteHelpers.ExecuteDataSet("select * from System order by ParameterID asc", null).Tables[0];  //读取计划表写入缓存
            if (MainWindowViewModel.dt_SysSet.Rows.Count>0) Grid.ItemsSource = MainWindowViewModel.dt_SysSet.DefaultView;  //转换显示计划表
            SQLiteHelpers.Close();  //关闭连接
        }
        private void Grid_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)//数据表输入事件
        {
            string ID;
            string newValue = (e.EditingElement as TextBox).Text;//获得输入单元格信息
            int rownum = Grid.SelectedIndex;//获取鼠标选中行并定义变量
            if (rownum != -1)//判断鼠标定位是否有效
            {
                ID = (Grid.Columns[1].GetCellContent(Grid.Items[rownum]) as TextBlock).Text;//定位第0列,
                Dictionary datagrid_v = new Dictionary();//缓存函数
                datagrid_v.Add("Value", newValue);
                SQLiteHelpers = new SQLiteHelper(DBAddress); //数据库连接路径
                SQLiteHelpers.Open();  //打开数据库
                SQLiteHelpers.Update("System", datagrid_v, "ParameterID ='" + ID + "'", null);//更新
                MainWindowViewModel.dt_SysSet = SQLiteHelpers.ExecuteDataSet("select * from System order by ParameterID asc", null).Tables[0];  
                SQLiteHelpers.Close();//关闭数据库
            }
            MainWindowViewModel.set_ = true;
        }
        private void UserControl_Loaded(object sender, RoutedEventArgs e)//打开页面时的操作
        {
            DataGridRow dr = (DataGridRow)Grid.ItemContainerGenerator.ContainerFromIndex(0);//取第0行单元格 
            DataGridCellsPresenter presenter = GetVisualChild(dr);
            DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(3); //取第3列每行单元格 
            cell.Focus();
            Grid.SelectedIndex = 0;
        }
        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;
        }
    }
}