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"];
上一篇: 详解::required :optional 15
下一篇: 自定义标签使用