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 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0

    Em muốn khi click chọn một mã số SV bên treeView thì thông tin của SV đó hiển thị lên listView. Nhưng vẫn làm chưa được.

    Đây là giao diện của em


    Đây là CSDL (Gồm một bản thông tin sinh viên thôi)


    Còn đây là code.

    Mã:
    private void treeView1_MouseClick(object sender, MouseEventArgs e)
            {
                SqlConnection con = cn.GetCon();
                con.Open(); //Mở kết nối
                try
                {
                    
                    for (int i = 0; i < treeView1.Nodes.Count; i++)
                    {
                        for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++)
                        {
                            if (treeView1.Nodes[i].Nodes[j].IsSelected == true)
                            {
                                SqlDataAdapter da = new SqlDataAdapter("Select * from tbSINHVIEN where maso = N'" + treeView1.Nodes[i].Nodes[j].ToString() + "'", con);
                                DataTable dt = new DataTable();
                                da.Fill(dt);
    
                                listView1.Items.Clear();
                                listView1.View = View.Details;
                                listView1.GridLines = true;
                                listView1.FullRowSelect = true;
    
                                foreach (DataRow row in dt.Rows)
                                {
                                    listView1.Items.Add(row["maso"].ToString());
                                    listView1.Items[j].SubItems.Add(row["hoten"].ToString());
                                    listView1.Items[j].SubItems.Add(row["ngaysinh"].ToString());
                                    listView1.Items[j].SubItems.Add(row["gioitinh"].ToString());
                                    listView1.Items[j].SubItems.Add(row["quequan"].ToString());
                                    listView1.Items[j].SubItems.Add(row["sodt"].ToString());
                                    listView1.Items[j].SubItems.Add(row["socmnd"].ToString());
                                    listView1.Items[j].SubItems.Add(row["malop"].ToString());
                                    listView1.Items[j].SubItems.Add(row["makhoa"].ToString());
                                }
                            }
                        }
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Có thể chỉ cho em sai chỗ nào ko ạ?
    Cảm ơn các bác rất nhiều ạ!!!!

    - - - Nội dung đã được cập nhật ngày 24-06-2014 lúc 02:24 PM - - -

    Trích dẫn Gửi bởi khanhltv1994
    Đây là giao diện của em


    Đây là CSDL (Gồm một bản thông tin sinh viên thôi)


    Còn đây là code.

    Mã:
    private void treeView1_MouseClick(object sender, MouseEventArgs e)
            {
                SqlConnection con = cn.GetCon();
                con.Open(); //Mở kết nối
                try
                {
                    
                    for (int i = 0; i < treeView1.Nodes.Count; i++)
                    {
                        for (int j = 0; j < treeView1.Nodes[i].Nodes.Count; j++)
                        {
                            if (treeView1.Nodes[i].Nodes[j].IsSelected == true)
                            {
                                SqlDataAdapter da = new SqlDataAdapter("Select * from tbSINHVIEN where maso = N'" + treeView1.Nodes[i].Nodes[j].ToString() + "'", con);
                                DataTable dt = new DataTable();
                                da.Fill(dt);
    
                                listView1.Items.Clear();
                                listView1.View = View.Details;
                                listView1.GridLines = true;
                                listView1.FullRowSelect = true;
    
                                foreach (DataRow row in dt.Rows)
                                {
                                    listView1.Items.Add(row["maso"].ToString());
                                    listView1.Items[j].SubItems.Add(row["hoten"].ToString());
                                    listView1.Items[j].SubItems.Add(row["ngaysinh"].ToString());
                                    listView1.Items[j].SubItems.Add(row["gioitinh"].ToString());
                                    listView1.Items[j].SubItems.Add(row["quequan"].ToString());
                                    listView1.Items[j].SubItems.Add(row["sodt"].ToString());
                                    listView1.Items[j].SubItems.Add(row["socmnd"].ToString());
                                    listView1.Items[j].SubItems.Add(row["malop"].ToString());
                                    listView1.Items[j].SubItems.Add(row["makhoa"].ToString());
                                }
                            }
                        }
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Có thể chỉ cho em sai chỗ nào ko ạ?
    Cảm ơn các bác rất nhiều ạ!!!!
    Chưa thấy ai chỉ giáo hết. Huhu. Sắp nộp bài rồi.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Chắc trong quá trình chạy có bảng lỗi JIT hiện lên chứ?

    Làm gì mà dài dữ vậy bạn? Hậu quả của việc không xác nhận đúng sự kiện.
    TreeView.AfterSelect là sự kiện khi một nút (node) được chọn. Trong sự kiện này nó gửi tham số (TreeViewEventArgs) dữ liệu là nút nào được chọn luôn. Đâu phải dài dòng dùng vòng lặp cho khổ thế bạn.

    Việc còn lại của bạn chỉ là:

    Mã:
    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)    SqlDataAdapter da = new SqlDataAdapter("Select * from tbSINHVIEN where maso = N'" + e.Node.ToString() + "'", con);    DataTable dt = new DataTable();    da.Fill(dt);     listView1.Items.Clear();    //listView1.View = View.Details; // Chỉ cần chỉnh 1 lần. Không cần chỉnh lại chỗ này.    //listView1.GridLines = true; // Chỉ cần chỉnh 1 lần. Không cần chỉnh lại chỗ này.    //listView1.FullRowSelect = true; // Chỉ cần chỉnh 1 lần. Không cần chỉnh lại chỗ này.        ListViewItem Temp = null;    foreach (DataRow row in dt.Rows)    {        // Dùng j ở đây là sai hoàn toàn.        // listView1.Items[j].SubItems.Add(row["hoten"].ToString()); // Sai khi dùng j        Temp = new ListViewItem(row["maso"].ToString());        Temp.SubItems.Add(row["hoten"].ToString());        Temp.SubItems.Add(row["ngaysinh"].ToString());        Temp.SubItems.Add(row["gioitinh"].ToString());        Temp.SubItems.Add(row["quequan"].ToString());        Temp.SubItems.Add(row["sodt"].ToString());        Temp.SubItems.Add(row["socmnd"].ToString());        Temp.SubItems.Add(row["malop"].ToString());        Temp.SubItems.Add(row["makhoa"].ToString());        listView1.Items.Add(Temp);    }}
    Tìm hiểu nó, nếu nó không có thì hãy dùng cách khác. TreeView.AfterSelect đã có sẵn.

 

 

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
  •