製作動態TreeView

來源:互聯網
上載者:User

首先向伺服器發送請求:

   

   DataTable dt = DeserializeDataTable(GetMenuData(DefineConst.guser));//向伺服器發送請求獲得datatable對象/// <summary>/// 還原序列化DataTable/// </summary>/// <param name="pXml">序列化的DataTable</param>/// <returns>DataTable</returns>public static DataTable DeserializeDataTable(string pXml){            DataTable dt = new DataTable();            try            {                StringReader strReader = new StringReader(pXml);                XmlReader xmlReader = XmlReader.Create(strReader);                XmlSerializer serializer = new XmlSerializer(typeof(DataTable));                                dt = serializer.Deserialize(xmlReader) as DataTable;                return dt;            }            catch (Exception e)            {                return dt;            }}

伺服器處理內容:

    public string GetMenuData(string userid)    {        string groupid = DefineConst.gusergroupid;        string sql = @"select rightid,rightname,form_id,parentid                        from mix_right_info";        sql = string.Format(sql, groupid, userid);        DataSet ds =getSet(sql);        DataTable dt = new DataTable();        if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)        {            dt = ds.Tables[0];        }        dt.TableName = "TreeView";        return SerializeDataTableXml(dt);    }        /// <summary>/// 序列化DataTable/// </summary>/// <param name="pDt">包含資料的DataTable</param>/// <returns>序列化的DataTable</returns>public  static string SerializeDataTableXml(DataTable dt){// 序列化DataTableStringBuilder sb = new StringBuilder();XmlWriter writer = XmlWriter.Create(sb);XmlSerializer serializer = new XmlSerializer(typeof(DataTable));serializer.Serialize(writer, dt);writer.Close();return sb.ToString();}

用戶端對DataTable操作產生樹狀結構:

 CreateMainMenu(dt, tvmenu)/// <summary>/// 產生樹形菜單/// </summary>/// <param name="dt">datetable</param>/// <param name="tv">treeview</param>public static bool CreateMainMenu(DataTable dt, TreeView tv){string parentid = "";foreach (DataRow dr in dt.Rows){if (dr[3].ToString() == "1"){TreeNode tn = new TreeNode();tn.Name = dr[0].ToString();tn.Text = dr[1].ToString();                    tn.Tag = dr[2].ToString();parentid = dr[3].ToString();tv.Nodes.Add(tn);tn.ImageIndex = 0;AddSubMenu(tn, dt, dr);}}return true;}/// <summary>/// 產生子功能表/// </summary>/// <param name="tn"></param>/// <param name="dt"></param>/// <param name="dr"></param>private static void AddSubMenu(TreeNode tn, DataTable dt, DataRow dr){string parentid = "";foreach (DataRow ddr in dt.Rows){if (ddr[3].ToString() == dr[0].ToString()){//ddr為dr的子節點TreeNode ttn = new TreeNode();                    ttn.Name = ddr[0].ToString();//ttn.Name = ddr["表單名稱"].ToString();                    ttn.Text = ddr[1].ToString();//ttn.Text = ddr["許可權名稱"].ToString();                    parentid = ddr[3].ToString();//parentid = ddr["父級許可權"].ToString();                    ttn.Tag = ddr[2].ToString();ttn.ImageIndex = 0;ttn.SelectedImageIndex = 1;tn.Nodes.Add(ttn);AddSubMenu(ttn, dt, ddr);}}}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.