第一种是最简单的,下面先来实现第一种效果,其他的随后慢慢补上
//首先创建datatable
public DataView drv(string query)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D://xcrs.mdb";
conn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter(query, conn);
DataSet ds = new DataSet();
adp.Fill(ds, "bm");
return ds.Tables["bm"].DefaultView;
conn.Close();
conn.Dispose();
}
//接下是通过数据表递归加载
/// <summary>
/// 递归显示-treeview效果模仿
/// 调用方法:
/// dv = drv("select * from bm");
/// dv.Sort = "PID ASC";
/// CreateTree(treeview控件ID,Dataview)
/// </summary>
/// <param name="trvDBBinding">需要绑定的treeview控件名称</param>
/// <returns>结果</returns>
public void CreateComboboxTree(ComboBox trvDBBinding, DataView dv)
{
DataRowView[] arrDRV = dv.FindRows(0);//Get root data info
int tnNew;
if (arrDRV.Length == 0) return;
foreach (DataRowView dr in arrDRV)
{
trvDBBinding.Items.Add(dr["Name"].ToString());
tnNew=Convert.ToInt32(dr["ID"]);
CreateComboboxTreeNode(trvDBBinding, ref tnNew, dv, " ");
}
}
/// <summary>
/// 递归显示-其他控件treeview效果模仿
/// 树连接数据库------子节点
/// </summary>
/// <param name="tnParent">父ID</param>
/// <returns>结果</returns>
public void CreateComboboxTreeNode(ComboBox trvDBBinding,ref int tnParent, DataView dv,string strfill)
{
DataRowView[] arrDRV = dv.FindRows(tnParent);//Get children data info
int tnNew;
foreach (DataRowView dr in arrDRV)
{
trvDBBinding.Items.Add(strfill + dr["Name"].ToString());
tnNew = Convert.ToInt32(dr["ID"]);
CreateComboboxTreeNode(trvDBBinding, ref tnNew, dv, strfill + " ");
}
}
调用方法:
在form_load 事件中写:
DataView dv = drv("select * from bm");
dv.Sort = "PID ASC"; //pai xu
CreateComboboxTree(this.comboBox1, dv);