private string UpCBZX(string code, string name)
    {
        string UPName = name;
        DBClass oraDb = null;
        try
        {
            string connStr = System.Configuration.ConfigurationManager.AppSettings["BPMYW"];//连接字符串
            oraDb = new DBClass(connStr);
            string sqlStr = "select * from Public_CbzxItem where cfeecode='" + code + "' order by cfeeorder";
            DataTable tbl = oraDb.GetDataSet(sqlStr).Tables[0];
            if (tbl.Rows.Count > 0)
            {
                UPName = tbl.Rows[0]["cFeeName"].ToString() + "-->" + name;                if (tbl.Rows[0]["cFeeCode"].ToString() != "0")
                {
                    UpCBZX(tbl.Rows[0]["cUPFeeCode"].ToString(), UPName);
                }
                //return UPName;
            }
            oraDb.clear();        }
        catch (Exception ee)
        {
            if (oraDb != null && oraDb.Connection.State == System.Data.ConnectionState.Open)
            {
                oraDb.clear();//关闭连接;            }
        }
        return UPName;
    }

解决方案 »

  1.   

    return 之后,执行 UpCBZX(tbl.Rows[0]["cUPFeeCode"].ToString(), UPName);这句?
      

  2.   


     if (tbl.Rows[0]["cFeeCode"].ToString() != "0")
                    {
                        UpCBZX(tbl.Rows[0]["cUPFeeCode"].ToString(), UPName);
                    }这一段的意义是? 返回值也没有用到 =。= 不是
    UPName=UpCBZX(tbl.Rows[0]["cUPFeeCode"].ToString(), UPName);
    或 
    UpCBZX(tbl.Rows[0]["cUPFeeCode"].ToString(), ref UPName);?
      

  3.   

    这个是递归操作了,类似找一个名字的子分类的顶级分类
    你分析代码就可以明白
    假设name = Nokia第一次执行的结果可能是:
    手机->Nokia
    第二次执行的结果可能是
    通讯->手机->Nokia
    第三次就直接返回这个值了,因为已经到了顶级菜单了