private void LoadLoaiMonDeQui(int MaLMCha, int cap, ArrayList ds)
    {
        LoaiMonDTO[] dsloaimoncon = new LoaiMonBUS().DanhSachLoaiMonCon(MaLMCha);
        LoaiMonItem  lmItem       = new LoaiMonItem();

        foreach (LoaiMonDTO lmDto in dsloaimoncon)
        {
            lmItem.MaLoaiMon     = lmDto.Ma_loai_mon;
            lmItem.TenLoaiMon    = lmDto.Ten_loai_mon;
            lmItem.MaLoaiMonCha  = lmDto.Ma_loai_mon_cha;
            lmItem.LaLoaiMonLa   = lmDto.La_loai_mon_la;
            lmItem.SoLuongMonCon = -1;

            //định dạng tên loại món theo cấp
            string chuoi = "";
            for (int i = 0; i < cap; i++)
            {
                chuoi += "--";
            }
            chuoi            += lmItem.TenLoaiMon;
            lmItem.TenLoaiMon = chuoi; //"<a href=ThemMonMoi.aspx>" + chuoi.Trim() + "</a>" ;

            //neu la mon la, tinh so luong mon con
            if (lmItem.LaLoaiMonLa == true)
            {
                lmItem.SoLuongMonCon = new MonAnBUS().TinhSoLuongMonAnThuocLoaiMon(lmItem.MaLoaiMon);
            }

            ds.Add(lmItem);

            cap++;
            LoadLoaiMonDeQui(lmDto.Ma_loai_mon, cap, ds);
            cap--;
        }
    }
    protected void DuyetCayLoaiMon()
    {
        // Xử lý request
        int pageSize = 10;

        if (Request["results"] != null)
        {
            pageSize = int.Parse((string)Request["results"]);
        }

        int pageNum    = 1;
        int startIndex = 0;

        if (Request["startIndex"] != null)
        {
            startIndex = int.Parse((string)Request["startIndex"]);
            pageNum    = (startIndex / pageSize) + 1;
        }

        //Duyệt cây loại món
        ArrayList ds = new ArrayList();

        LoadLoaiMonDeQui(-1, 0, ds);

        XL_THE        Kq         = new XL_THE("DANH_SACH");
        XL_THUOC_TINH Thuoc_tinh = new XL_THUOC_TINH("totalRecords", ds.Count.ToString());

        Kq.Danh_sach_thuoc_tinh.Add(Thuoc_tinh);

        int n = startIndex + pageSize;

        n = (n < ds.Count) ? n : ds.Count;

        for (int i = startIndex; i < n; i++)
        {
            LoaiMonItem lmItem = (LoaiMonItem)ds[i];

            XL_THE the = new XL_THE("Record");

            Thuoc_tinh = new XL_THUOC_TINH("MaLoaiMon", lmItem.MaLoaiMon.ToString());
            the.Danh_sach_thuoc_tinh.Add(Thuoc_tinh);

            Thuoc_tinh = new XL_THUOC_TINH("TenLoaiMon", lmItem.TenLoaiMon.ToString());
            the.Danh_sach_thuoc_tinh.Add(Thuoc_tinh);

            Thuoc_tinh = new XL_THUOC_TINH("LaLoaiMonLa", lmItem.LaLoaiMonLa.ToString());
            the.Danh_sach_thuoc_tinh.Add(Thuoc_tinh);

            if (lmItem.LaLoaiMonLa == true)
            {
                Thuoc_tinh = new XL_THUOC_TINH("SoLuongMonCon", lmItem.SoLuongMonCon.ToString());
            }
            else
            {
                Thuoc_tinh = new XL_THUOC_TINH("SoLuongMonCon", "-");
            }
            the.Danh_sach_thuoc_tinh.Add(Thuoc_tinh);

            Kq.Danh_sach_the.Add(the);
        }

        XL_CHUOI.XuatXML(Response, Kq.Chuoi());
    }