treeview的演练 1210 三国性别表

104 阅读2分钟
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsFormsApplication61
{
    public partial class Form1 : Form
    {
        DataSet ds = new DataSet();
        SqlConnection conn;
        SqlDataAdapter adapter;

        public Form1()
        {

            InitializeComponent();
        }

        // after,在。。。之后
        // select,选择
        // 节点选中之后,会触发的事件
        private void tvMenuTree_AfterSelect(object sender, TreeViewEventArgs e)
        {

            loadData();

        }

        // 数据的加载
        public void loadData() {



            // 根据节点的信息,拿到关键词
            String tag = tvMenuTree.SelectedNode.Tag.ToString();

            // 获得节点的层级
            int level = tvMenuTree.SelectedNode.Level;

            // 对节点的层次进行判断
            String sql = "";
            switch (level)
            {
                case 0:
                    sql = String.Format("select * from sanguo where country = '{0}'", tag);
                    break;
                case 1:
                    // 当节点leve为1的时候它一定会有一个父级,父级代表的是国家
                    // 获得父级节点对象的方法: 当前节点.父亲,可得父级对象
                    String country = tvMenuTree.SelectedNode.Parent.Tag.ToString();
                    sql = String.Format("select * from sanguo where country = '{0}' and gender = {1}", country, tag);
                    break;
            }

            // 让DataGridView控件,呈现数据


            // 小车对象 车  = new 小车类(sql,连接对象)
            adapter = new SqlDataAdapter(sql, conn);

            // 仓库 


            // 判断一下:
            // 判断 仓库中的heros表是否存在,如果hero表存在,那就要把它清空
            // if(ds.Tables.Count>0){
            if (ds.Tables["heros"] != null)
            {
                ds.Tables["heros"].Clear();
            }


            // 小车填入仓库

            adapter.Fill(ds, "heros");



            // 控件绑定数据源
            dgvHeroTable.AutoGenerateColumns = false;
            dgvHeroTable.AllowUserToAddRows = false;  // 不允许用户添加新行
            dgvHeroTable.DataSource = ds.Tables["heros"];


            // dgv控年的列绑定仓库表的列名称


        
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            // 窗体一加载,就实例化一个连接对象
            conn = new SqlConnection("Data Source=.;Initial Catalog=dbok;Persist Security Info=True;User ID=sa;Password=root123123");

        }

        private void dgvHeroTable_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void tsmiUpdate_Click(object sender, EventArgs e)
        {

            // 询问一下是否需要更新
            DialogResult res=MessageBox.Show("确定要更新数据吗?","更新提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);

            // 根据用户的选择情况进行操作
            if(res==DialogResult.No){
                return;
            }


            // 新建一个commandBuilder对象
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);


            // 让小车更新一下
            adapter.Update(ds, "heros");

        }

        private void tsmiDelete_Click(object sender, EventArgs e)
        {
            // 对选中的行进行操做
            // dgv的选中的行进行操作
            String id = dgvHeroTable.SelectedRows[0].Cells[0].Value.ToString();

            // 利用提取到的数据进行数据库操作

            // 新建一个执法者,给他一个删除的命令
            String sql = "delete from sanguo where id = " + id;

            try
            {
                conn.Open();

                SqlCommand cmd = new SqlCommand(sql, conn);
                // 让执法者调用方法。  执行不查询的方法,会返回一个影响的行数,int类型
                cmd.ExecuteNonQuery();

                // 提示
                MessageBox.Show("删除成功");

                // 重新加载数据
                loadData();

            }
            catch
            {
                MessageBox.Show("发生意外,请换个时间再尝试");
            }
            finally {
                conn.Close();
            }



        }
    }
}