代码如下,我知道用太多的嵌套。可是有什么办法可以快么。不用SelectedDataIndex的方法。
private void GetNodes(ref Microsoft.Web.UI.WebControls.TreeNode tn,string parmStr,string level_id)
{
int a = Int32.Parse(level_id);
if (odbcConnection1.State != ConnectionState.Open)
odbcConnection1.Open();
OdbcCommand cmd = new OdbcCommand("{? = CALL pb_CommMenu;4(?,?,?,?)}", odbcConnection1);//是调用这个存储过程来得到节点的id。name
cmd.CommandType = CommandType.StoredProcedure;
OdbcParameter[] parms = new OdbcParameter[] {   new OdbcParameter("@return_value",OdbcType.Int),
new OdbcParameter("@action", OdbcType.Char,1), 
new OdbcParameter("@lan_id",OdbcType.TinyInt),
new OdbcParameter("@level_id",OdbcType.Int),
new OdbcParameter("@rank",OdbcType.Char,1)
}; 
parms[0].Direction = ParameterDirection.ReturnValue;
parms[1].Value = "0";
parms[2].Value = 0;
parms[3].Value = a;
parms[4].Value = parmStr;

foreach (OdbcParameter parm in parms)
{
cmd.Parameters.Add(parm);
}
OdbcDataAdapter da = new OdbcDataAdapter(cmd);
DataSet ds = new DataSet(); da.Fill(ds); if (ds.Tables.Count > 0)
BindTV2(ds.Tables[0].DefaultView, tn.Nodes); for (int i=0; i<tn.Nodes.Count; i++)
{
Microsoft.Web.UI.WebControls.TreeNode ltn = tn.Nodes[i]; GetNodes(ref ltn,parmStr,ltn.ID);
}
odbcConnection1.Close();
} private void BindTV2(DataView dv,Microsoft.Web.UI.WebControls.TreeNodeCollection treeNodes)
{
Microsoft.Web.UI.WebControls.TreeNode tn; if (dv.Count > 0)
{
foreach(DataRowView drv in dv)
{
if (drv.Row["menu_name"] != DBNull.Value)
{
tn = new Microsoft.Web.UI.WebControls.TreeNode();
tn.Text = drv.Row["menu_name"].ToString();
tn.ID = drv.Row["menu_id"].ToString();
tn.Expanded = false;
treeNodes.Add(tn);
}
}
}
}