protected void Page_Load (object sender, EventArgs E)
{
If (! IsPostBack)
{
Listmenu ();
}
}
protected string _menu = String. Empty;
public void Listmenu ()
{
StringBuilder sb = new StringBuilder ();
DataTable _list = new DataTable ();
String conctionstr = "Data source=127.0.0.1;initial catalog=accordmenu;integrated security=false; User id=sa; Password=sa ";
Using (SqlConnection Conec = new SqlConnection (conctionstr))
{
Conec. Open ();
String sqltext = "select * from sys_menu";
SqlCommand Comand = new SqlCommand (sqltext, conec);
SqlDataAdapter adaper = new SqlDataAdapter (Comand);
Adaper.fill (_list);
Adaper.dispose ();
Comand.dispose ();
Conec. Close ();
}
datarow[] rows = _list. Select ("parentid=0");
Sb. Append ("[");
BOOL Isfist = false;
foreach (DataRow Dr in Rows)
{
If (isfist)
Sb. Append (",");
Isfist = true;
String id = dr["id"]. ToString ();
Sb. Append ("{");
Sb. AppendFormat ("\" id\ ": \" {0}\ ",", dr["id"]);
Sb. AppendFormat ("\" text\ ": \" {0}\ ",", dr["MenuName"]);
Sb. AppendFormat ("\" pid\ ": \" {0}\ ",", dr["parentid"]);
Sb. AppendFormat ("\" iconcls\ ": \" icon_{0}\ "," dr["menu_icon"]);
Sb. AppendFormat ("\" icon_id\ ": \" {0}\ ",", dr["menu_icon"]);
Sb. AppendFormat ("\" url\ ": \" {0}\ ",", dr["menu_url"]);
Sb. AppendFormat ("\" icon_url\ ": \" {0}\ "", dr["icon_url"]);
Sb. Append (", children:[");
Sb. Append (getsubmenu (id, _list));
Sb. Append ("]");
Sb. Append ("}");
}
Sb. Append ("]");
_menu = Sb. ToString ();
}
<summary>
Recursive calls generate infinite levels
</summary>
<param name= "pid" ></param>
<param name= "dt" ></param>
<returns></returns>
private string GetSubMenu (string pid, DataTable Dt)
{
StringBuilder sb = new StringBuilder ();
datarow[] rows = Dt. Select ("parentid=" + pid);
If (rows. Length > 0)
{
BOOL Isfist = false;
foreach (DataRow Dr in Rows)
{
If (isfist)
Sb. Append (",");
Isfist = true;
String id = dr["id"]. ToString ();
Sb. Append ("{");
Sb. AppendFormat ("\" id\ ": \" {0}\ ",", dr["id"]);
Sb. AppendFormat ("\" text\ ": \" {0}\ ",", dr["MenuName"]);
Sb. AppendFormat ("\" pid\ ": \" {0}\ ",", dr["parentid"]);
Sb. AppendFormat ("\" iconcls\ ": \" icon_{0}\ "," dr["menu_icon"]);
Sb. AppendFormat ("\" icon_id\ ": \" {0}\ ",", dr["menu_icon"]);
Sb. AppendFormat ("\" url\ ": \" {0}\ ",", dr["menu_url"]);
Sb. AppendFormat ("\" icon_url\ ": \" {0}\ "", dr["icon_url"]);
Sb. Append (", children:[");
Sb. Append (getsubmenu (id, dt));
Sb. Append ("]");
Sb. Append ("}");
}
}
Return sb. ToString ();
}
Generate a DataTable tree JSON