C# TreeView的两种绑定方法

工具C# ,Access.

数据库中有tblStu,tblDept和tblClass三个表。其中tblClass.Class_Dept的外键是tblDept.Id。tblstu.Stu_Class的外键是tblClass.Id

本文主要实现的功能是利用代码使TreeView的根节点绑定tblDept表的内容,二级节点绑定在相应的根节点下,点击TreeView相应

班级时,在DataGridView中显示相应班级的学生。


我首先想到的实现思路是使用BindingSourse中的Filter方法。

首先编写Sql查询语句,创建适配器,打开连接,实例化一个DataSet,填充,实例化BindingSourse对象,绑定数据源,构造Class_Name='e.Node.Text'  字符串。最后将ds绑定DataGridView数据源。

代码如下:

            ///
            ///第一种方法///
            ///
            string strSQL = "select tblStu.*,tblClass.Class_ID,tblClass.Class_Name from [tblStu] ,[tblClass] where tblClass.Class_Id = tblStu.Stu_Class";
            OleDbDataAdapter da = new OleDbDataAdapter (strSQL ,con  );
            con.Open ( );
            DataSet ds = new DataSet ( );
            da.Fill (ds, "tblStu");
            con.Close ( );
            BindingSource bs = new BindingSource ( );
            bs.DataSource = ds;
            bs.DataMember = "tblStu";
            bs.Filter = "Class_Name='" + e.Node.Text + "'";
            dataGridView1.DataSource = bs ;
           
       }

第二种方法是直接使用Sql查询语句构造,相比第一种而言,这种写出来的代码简洁明了,需要注意的一点是如果条件改为查询Class_Id = , 因为Class_Id字段在Access中为数字,则不需要再等号后加‘’  单引号 。

            ///
            ///第二种方法///
            ///
            string strSQL = "select stu_ID,stu_Name,Class_Name,stu_sex,Stu_Birth,stu_photo from tblstu,tblclass where stu_Class=class_ID";

            strSQL += " and class_name='";
            strSQL += e.Node.Text;
            strSQL += "'";
           // strSQL += treeView1.SelectedNode.Text;
            //
            OleDbDataAdapter datr = new OleDbDataAdapter (strSQL, con);
            con.Open ( );
            DataSet ds = new DataSet ( );
            datr.Fill ( ds,"stu");
            con.Close ( );
            dataGridView1.DataSource = ds.Tables ["stu"];

 

你可能感兴趣的:(C#学习日志)