public static void LoadWebTreeView( Microsoft.Web.UI.WebControls.TreeView WebTree , HttpRequest Request )
{
DataSet ds = new DataSet(  );
//从数据库加载菜单组表与菜单项表
DataSet temds = SqlHelper.ExecuteDataset( SPHV.Config.GetConnection ( ) ,
"MenuGroup_read" , Request[ "Mobile_ID" ].ToString(  ) );
DataTable dt = temds.Tables[ 0 ];
dt.TableName = "MenuGroup";
temds.Tables.RemoveAt( 0 ) ;
ds.Tables.Add( dt ); temds = SqlHelper.ExecuteDataset( SPHV.Config.GetConnection ( ) ,
"MenuItem_read"  , Request[ "Mobile_ID" ].ToString(  ) );
dt = temds.Tables[0];
dt.TableName = "MenuItem";
temds.Tables.RemoveAt( 0 );
ds.Tables.Add (  dt );

//建立菜单组的层次关系
ds.Relations.Add( "MenuGroupHierarchy" ,
ds.Tables[ "MenuGroup" ].Columns[ "ID" ] ,
ds.Tables[ "MenuGroup" ].Columns[ "Parent_ID" ] ); //建立菜单组和菜单项的对应关系
ds.Relations.Add( "MenuGroupToMenuItem" ,
ds.Tables[ "MenuGroup" ].Columns[ "ID" ] ,
ds.Tables[ "MenuItem"  ].Columns[ "MenuGroup_ID" ] );
foreach( DataRow MenuGroup in ds.Tables[ "MenuGroup" ].Rows )
{
// 如果Parent_ID为空,刚此项为根目录组.
TreeNode Node=new TreeNode() ;
if( MenuGroup.IsNull( "Parent_ID" ) )
{ // 建立一个菜单组并添加到根目录组。

Node.Text = MenuGroup["Menu_name"].ToString() ;
WebTree.Nodes.Add(Node);
Node.Expanded=true;
AddTree( MenuGroup , MenuGroup.GetChildRows( ds.Relations["MenuGroupHierarchy"] ), ds, Node , Request );    //进入递归 }
}
}
private static void AddTree(DataRow dataRow, DataRow[] dataRows,DataSet ds , TreeNode webMenuGroup , HttpRequest Request)
{
TreeNode msTreeNode = new TreeNode();
DataRow[] SubGroup;
int ChildArticleLength; //为菜单组添加项
foreach( DataRow MenuItem in dataRow.GetChildRows( ds.Relations[ "MenuGroupToMenuItem" ] ) )
{
// 建立一个菜单项并初始化相关属性
msTreeNode.Text = MenuItem[ "MenuItem_Name" ].ToString(  );
//引导路径
msTreeNode.NavigateUrl = Request.Url.LocalPath + "?id=" + MenuItem[ "ID" ].ToString() + "&Mobile_ID=" + Request[ "Mobile_ID" ];
webMenuGroup.Nodes.Add( msTreeNode );
msTreeNode.Expanded=true;
// 获得URL中菜单项的ID并做相关处理
if(Request[ "id" ] != null && 
( Request[ "id" ].ToString(  ) == MenuItem[ "ID" ].ToString(  ) ) )
{
// NewsCaption.Text = MenuItem[ "MenuItem_Name" ].ToString() + "<hr>";
}
} //加载菜单组并完成属性初始化
foreach(DataRow MenuGroup in dataRows)
{
// 建立菜单组
msTreeNode.Text = MenuGroup["Menu_Name"].ToString(); ChildArticleLength = MenuGroup.GetChildRows(ds.Relations[ "MenuGroupToMenuItem" ] ).Length; SubGroup = MenuGroup.GetChildRows(ds.Relations["MenuGroupHierarchy"]); //如果有子菜单组则执行递归调用
if(SubGroup.Length > 0 || ChildArticleLength > 0)
{
AddTree( MenuGroup , SubGroup , ds, msTreeNode , Request );
}
}
}