欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# TreeView的两种绑定方法

程序员文章站 2022-03-04 11:52:20
...

工具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"];

 

相关标签: TreeView Sql