Breaking News

Linq To Sql server Truy vấn sản phẩm theo danh mục

 

Hướng dẫn các truy vấn sản phẩm theo danh mực trong linq to sql c# viết các viết khác nhau.

 

Hướng dẫn cách truy vấn sản phẩm bằng methodsyntax

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace LinqToSQL

{

    public partial class frmTruyvansanphamtheodanhmuc : Form

    {

        public frmTruyvansanphamtheodanhmuc()

        {

            InitializeComponent();

        }

 

        private void frmTruyvansanphamtheodanhmuc_Load(object sender, EventArgs e)

        {

            // hiện thì danh sách danh mục lên listbox

            CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();

            List<DanhMuc> dsdm = contex.DanhMucs.ToList();// hiện hết danh mục

            //// cách 1 hiện tất cả

            //lstDM.Items.Clear();

            //dsdm.ForEach(x =>

            //{

            //    lstDM.Items.Add(x.MaDM + "");

               

            //    lstDM.Items.Add(x.TenDM);

            //}

 

            //);

            // các 2 dùng DataBindings

            lstDM.DataSource = dsdm;

            lstDM.ValueMember = "MaDM"; // mã danh mục không hiên thi lên giao diện dùng cho lâp trình viên code

            lstDM.DisplayMember = "TenDM"; // tên danh mục

            clickdautien = true; // chờ nạp hết các dòng dữ liệu thì chúng ta gán bằng true

        }

        bool clickdautien = false;// đối sự kiện click chọn nên tạo biến đầu tiền là false

        private void lstDM_SelectedIndexChanged(object sender, EventArgs e)

        {

            CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();

            // lưu ý SelectedIndexChanged là lắng nghe sự kiện hoặc có sự thay đổi dòng dữ liệu

            if (clickdautien==false)

            {

                return; // chưa tải xong

            }

            if (lstDM.SelectedIndex==-1)// tải xong chưa chọn

            {

                return;

            }

            int ma = (int)lstDM.SelectedValue; //SelectedValue chính là ValueMember mà ValueMember=MaDM là kiểu int nên ép kiểu.

            List<SanPham> dssp = contex.SanPhams.Where(X => X.MaDM == ma).ToList();// method syntax lọc toàn bộ sản phẩm theo đúng mã DM ngta chọn

            lvSanPham.Items.Clear();

            dssp.ForEach(x =>

            {

                ListViewItem lvi = new ListViewItem(x.Ma + "");

                lvi.SubItems.Add(x.Ten);

                lvi.SubItems.Add(x.DonGia + "");

                lvSanPham.Items.Add(lvi);

            }

            );

        }

    }

}

Hướng dẫn cách truy vấn sản phẩm bằng Query syntax bằng các hiện thì danh mục lên treeview và hiển thị sản phẩm và chi iết 1 sản phẩm lên listview.

 

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace LinqToSQL

{

    public partial class frmTruyvansanphamtheodanhmucquery : Form

    {

        public frmTruyvansanphamtheodanhmucquery()

        {

            InitializeComponent();

        }

 

        private void frmTruyvansanphamtheodanhmucquery_Load(object sender, EventArgs e)

        {

CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();

            List<DanhMuc> dsdmtree = contex.DanhMucs.ToList();

            tvDanhMuc.Nodes.Clear();

            foreach (DanhMuc item in dsdmtree)

            {

                TreeNode nodedm = new TreeNode(item.TenDM);

                nodedm.Tag = item.MaDM;

                tvDanhMuc.Nodes.Add(nodedm);

                nodedm.ForeColor = Color.Blue;

                // lọc lấy danh sách sản phẩm theo danh mục

               // List<SanPham> dssp = contex.SanPhams.ToList();

                //hoặc

                List<SanPham> dssp = (from x in contex.SanPhams

                                      where x.MaDM == item.MaDM

                                      select x).ToList();

                // đưa sản phẩm vào node danh mục

                foreach (SanPham sp in dssp)

                {

                    TreeNode nodeSP = new TreeNode(sp.Ten);

                    nodeSP.Tag = sp.Ma;

                    // add nodesp vào nodedm

                    nodedm.Nodes.Add(nodeSP);

 

                }

            }

           

        }

private void tvDanhMuc_AfterSelect(object sender,TreeViewEventArgs e)

        {

            // TreeViewEventArgs e dựa vào biến e để ta biết người dùng chọn node nào

            if (e.Node==null)//chưa chọn

            {

                return;

            }

            // ở đây node có 2 cấp là node danh mục cấp 0 và node sản phẩm cấp 1

            if (e.Node.Level==0)// node danh mực

            {

                int madm = (int)e.Node.Tag; // là= nodedm.Tag = item.MaDM + "";

                Hienthisanphamtheodanhmuc(madm);

 

            }

            else if (e.Node.Level==1)// node sản phẩm

            {

                int masp = (int)e.Node.Tag;

                Hienthichitietsanpham(masp);

            }

        }

 

        private void Hienthichitietsanpham(int masp)

        {

 CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();

  SanPham sp = contex.SanPhams.FirstOrDefault(x=>x.Ma == masp);

            if (sp!=null)

            {

                lvsanpham.Items.Clear();

                ListViewItem liv = new ListViewItem(sp.Ma + "");

                liv.SubItems.Add(sp.Ten);

                liv.SubItems.Add(sp.DonGia + "");

                lvsanpham.Items.Add(liv);

 

            }

        }

        private void Hienthisanphamtheodanhmuc(int madm)

        {

 CSDLLINQDATADataContext contex = new CSDLLINQDATADataContext();

            List<SanPham> csdlsp = (from x in contex.SanPhams

                                    where x.MaDM == madm

                                    select x).ToList();// hiện toàn bộ sản phẩm theo danh mục

            lvsanpham.Items.Clear();

            csdlsp.ForEach(x =>

            {

                ListViewItem lvi = new ListViewItem(x.Ma + "");

                lvi.SubItems.Add(x.Ten);

                lvi.SubItems.Add(x.DonGia + "");

                lvsanpham.Items.Add(lvi);    

            }

            );

        }

    }

}

 


 


Không có nhận xét nào