-
03-11-2013, 01:21 PM #1Junior Member
- 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=???; }
View more random threads:
- Lập trình ứng dụng cho điện toán đám mây có gi khác với lập trình bình thường ?
- Xây dựng ứng dụng khởi động cùng hệ điều hành windows bằng webform
- Lấy tin tức từ web khác mà web đó sử dụng ajax va javascript!!!
- Cách dùng checkbox chọn để xóa nhiều bản ghi cùng một lúc?
- IIS báo lỗi LinQ (NullReferenceException) (có hình)
- hiển thị ảnh mặc định khi load image lỗi
- chuyển đổi Encoding để hiển thị trên web?
- Liên kết web bằng dropdownlist ASP.NET ?
- Tạo datalist với 2 dòng và nhiều cột
- Cách truy vấn quan hệ nhiều - nhiều trong Entity Framework
-
03-11-2013, 03:27 PM #2Junior Member
- 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 = ....
Mã:txtMaSP.Text = sp.MaSP; ...
-
04-11-2013, 11:21 AM #3Junior Member
- 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
-
04-11-2013, 01:31 PM #4Silver member
- 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
-
04-11-2013, 01:43 PM #5Junior Member
- 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
-
04-11-2013, 02:27 PM #6Junior Member
- 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) }
-
04-11-2013, 02:35 PM #7Junior Member
- 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
}
}
Gửi bởi gacon_tapcode
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...