递归在Dropdownlist中显示树状结构

做项目的时候这种效果很多客户觉得挺好的,挺直观,但是实现呢有点技巧哈,有很多朋友问过我这个问题,今天我就把它贴出来

 

代码部分:

/// <summary>
/// 返回分类列表
/// </summary>
/// <param name="ParSql">查询条件</param>
/// <param name="LFlag">1为俄文,0为中文</param>
/// <returns></returns>
public DataTable GetType(string QueryStr, string LFlag)
{
   DataTable table = COracle.GetTable("tbl_asset_type", "AMGUSER");
   DataColumnCollection cols = table.Columns;
   string SqlStr = "";
   if (QueryStr != "" && QueryStr != null)
   {
       SqlStr = "select * from tbl_asset_type where " + QueryStr + " order by LBLJ,LBXH";
   }
   else
   {
       SqlStr = "select * from tbl_asset_type order by LBLJ, LBXH";
   }
   cols.Add("PDMMC", typeof(System.String));
   Conn.Open();
   OracleDataAdapter MyAdpter = new OracleDataAdapter(SqlStr, Conn);
   MyAdpter.SelectCommand.ExecuteNonQuery();
   MyAdpter.Fill(table);
   OracleCommand Mycommand = new OracleCommand();
   OracleDataReader Myreader;
   for (int i = 0; i < table.Rows.Count; i++)
   {
       Mycommand.Connection = Conn;
       Mycommand.CommandType = CommandType.Text;
       Mycommand.CommandText = "select * from tbl_asset_type where bid in (" + table.Rows[i]["LBLJ"] + ") order by LBLJ , LBXH";
       Myreader = Mycommand.ExecuteReader();
       if (Myreader.HasRows)
       {
           while (Myreader.Read())
           {
               table.Rows[i]["PDMMC"] = table.Rows[i]["PDMMC"].ToString() + ">>";
               if (LFlag == "1")
               {
                   table.Rows[i]["PDMMC"] = table.Rows[i]["PDMMC"].ToString() + Myreader["DMMC_RU"].ToString();
               }
               else
               {
                   table.Rows[i]["PDMMC"] = table.Rows[i]["PDMMC"].ToString() + Myreader["DMMC"].ToString();
               }
           }
       }
       Myreader.Close();
   }
   Conn.Close();
   return table;
}
posted @ 2012-12-19 10:46  Alex.Net  阅读(193)  评论(0编辑  收藏  举报