Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Hiển thị chi tiết thông tin sản phẩm trong ASP.NET (mô hình 3 lớp)

    Mình đang gặp khó khăn trong cách hiển thị thông tin chi tiết của sản phẩm trong bài tập về webform với ASP.NET, các bạn hướng dẫn giúp mình nhé .. Cám ơn mọi người

    Đây là bài của mình ( code theo mô hình 3 lớp )

    Mã:
    public class DTO_SanPham
        {
            private string maSP;
    
            public string MaSP
            {
                get { return maSP; }
                set { maSP = value; }
            }
            private string tenSP;
    
            private string maNSX;
    
            private string maLoai;
    
            private string cpu;
    
            public string CPU
            {
                get { return cpu; }
                set { cpu = value; }
            }
    
            ...
    
            private string hinh;
    
            public string Hinh
            {
                get { return hinh; }
                set { hinh = value; }
            }
        }
    
    public class DAL_SanPham
    {
    // Hien thi san pham theo ma - dynamic
            public List<dynamic> ThongTinSP_MaSP(DTO_SanPham sp)
            {
                List<dynamic> data = new List<dynamic>();
                string sql = "select MaSP,TenSP,l.TenLoai,nsx.TenNSX,CPU,RAM,HDD,PIN,DonGia,Hinh from SanPham sp, Loai l, NhaSX nsx where sp.MaLoai=l.MaLoai and sp.MaNSX=nsx.MaNSX and MaSP=@MaSP";
                SqlParameter ma = new SqlParameter("@MaSP", sp.MaSP);
                SqlDataReader rd = SqlDataProvider.ExecuteQueryWithDataReader(sql, CommandType.Text, ma);
                if (rd.HasRows)
                {
                    while (rd.Read())
                    {
                        dynamic d = new
                        {
                            MaSP = rd[0].ToString(),
                            TenSP = rd[1].ToString(),
                            TenLoai = rd[2].ToString(),
                            TenNSX = rd[3].ToString(),
                            CPU = rd[4].ToString(),
                            RAM = rd[5].ToString(),
                            HDD = rd[6].ToString(),
                            PIN = rd[7].ToString(),
                            DonGia = float.Parse(rd[8].ToString()),
                            Hinh = rd[9].ToString()
                        };
                        data.Add(d);
                    }
                }
                return data;
            }
    }
    
    public partial class ChiTietSanPham : System.Web.UI.Page
        {
            BLL_SanPham Bl_SanPham = new BLL_SanPham();
            
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    string masp=Request.QueryString["MaSP"];
                    HienThi(masp);
                }
            }
    
            public void HienThi(string ma)
            {
                DTO_SanPham sp = new DTO_SanPham();
                sp.MaSP = ma;
                List<dynamic> list = BLL_SanPham.CT_SanPham_MaSP(sp); 
    
                // Các bạn giúp mình phần code này nhé 0:)
                txtMaSP.Text = ???;
                txtTenNhaSX.Text =???;
                txtTenLoai.Text=???;
            }
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    List của bạn k nên đặt là dynamic, bạn đặt lại là
    Mã:
    List<DTO_SanPham> sp = ....
    khi đó thì
    Mã:
    txtMaSP.Text = sp.MaSP; ...

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình hiểu ý bạn nhưng mình chỉ lấy đc mã sản phẩm, tên sản phẩm nhưng lại ko lấy đc Tên loại và tên nhà sản xuất

    Vì thiết kế dữ liệu của mình như sau:


    Sanpham (MaSP, TenSP, ... , MaLoai, MaNSX) => DTO_SanPham
    Loai (MaLoai, TenLoai) => DTO_Loai
    NhaSX ( MaNSX, TenNSX) => DTO_NhaSX
    Mình muốn lấy tên loại và tên nhà sản xuất thì làm cách nào ?

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Để lấy tên loại chẳng hạn, bạn cài đặt trong lớp BLL_Loai, DAL_Loai những hàm có dạng
    DTO_Loai LayLoaiSanPham(int id)
    DTO_Loai LayLoaiSanPham(DTO_SanPham spham)

    Để tìm ra Loại liên kết với SanPham, bạn cứ gọi đến 1 trong 2 hàm này, đừng ngại truy vấn CSDL nhiều lần [IMG]images/smilies/11.gif[/IMG]


    Còn 1 cách nữa là bạn cài đặt trong lớp DTO_SanPham 1 property cho phép lấy ra Loai có liên kết với nó

    public class DTO_SanPham
    {
    ............
    ............
    DTO_Loai LoaiSanPham
    {
    get { return DAL_Loai.LayLoaiSanPham(this); }
    }
    }
    Cách này có vẻ tự nhiên hơn. Từ 1 sản phẩm, bạn lấy property LoaiSanPham của nó là có ngay Loai sản phẩm liên kết với nó, tuy nhiên cách làm này phá vỡ sự tách biệt của DTO, làm cho DTO và DAL phụ thuộc 2 chiều vào nhau, khó khăn nếu muỗn thay thế tầng DAL sau này

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    bạn có thể viết mẫu dùm mình cho cái loại sản phẩm được ko ?? Vì mình cũng mới làm quen với dạng này ..Cám ơn bạn rất nhiều

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Lười lắm [IMG]images/smilies/daydreaming.gif[/IMG], mình viết thế này thôi [IMG]images/smilies/11.gif[/IMG]

    Mã:
    public void HienThi(string ma)
        {
            BLL_SanPham spBLL = new BLL_SanPham();
            DTO_SanPham sanPham = spBLL.Get(ma); // ham nay nhan vao ma san pham, tra ve SanPham tuong ung voi ma do
            
            BLL_Loai loaiBLL = new BLL_Loai();
            BLL_NhaSX nxsBLL = new BLL_NhaSX();
            DTO_Loai loai = loaiBLL.Get(sanPham); // ham nay tra ve Loai tuong ung voi San Pham
            DTO_NhaSX nsx = nxsBLL.Get(sanPham); // cung co the xay dung ham dang nay : nsx = nxsBLL.Get(sanPham.maNSX)
            
        }

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Có MaLoai rồi mà không lấy được DTO_Loai
    Có MaNSX rồi mà không lấy được DTO_NhaSX
    Code bạn lấy ở đâu vậy[IMG]images/smilies/dont_know.gif[/IMG]
    class DAL_Loai
    {
    public DTO_Loai GetLoai(string MaLoai)
    {
    //Code ở đây
    }
    }

    class DAL_NhaSX
    {
    public DTO_NhaSX GetNhaSX(string MaNSX )
    {
    //Code ở đây
    }
    }

    Trích dẫn Gửi bởi gacon_tapcode
    bạn có thể viết mẫu dùm mình cho cái loại sản phẩm được ko ?? Vì mình cũng mới làm quen với dạng này ..Cám ơn bạn rất nhiều

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •