Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

hỏi về columnheader trong litsview

15:14 22-07-2017 498 lượt xem 4 bình luận 08:56 23-07-2017

bạn ơi mình muốn add cố định 1 dữ liệu vào columnheader trong litsview nghĩa là columnheader đấy chỉ nhận giá trị đấy thui không nhận được giá khác  hiện tại thì mình có code thế này

 private void Form1_Load(object sender, EventArgs e)
        {
            
            DataSet dataSet = new DataSet();
            dataSet.ReadXml(path);
            DataTable dt = new DataTable();
            DataTable ts = new DataTable();
            dt = dataSet.Tables["sach"];
            ts = dataSet.Tables["tensach"];
            int i = 0;
            
            foreach (DataRow dr in dt.Rows)
            {
                listView1.Items.Add(dr["id"].ToString());
                listView1.Items[i].SubItems.Add(dr["masach"].ToString());
                listView1.Items[i].SubItems.Add(dr["tensach"].ToString());
                i++;
            }

còn đây là csdl của mình :

<?xml version="1.0" encoding="utf-8" ?> 
<ds>
  <sach id="123">
    <masach>s1</masach>
    <tensach>
      <s>sinh</s>
      <h>hoa</h>
    </tensach>
    <soluong>0</soluong>
    <dongia>0</dongia>
  </sach>
 </ds>


thì hiện tại mình có columnheader1, columnheader2, columnheader 3 thì mình muốn columnheader3 nhận so luong, columnheader1 nhan dong gia, columnheader2 nhan id. Cái mình muốn là có dòng code nào bắt các columnheader chỉ nhận đúng giá trị đấy thui, cám ơn

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Accodius đã bình luận 20:45 22-07-2017

Đây chỉ là code lấy dữ liệu từ file xml thôi, bạn có thể dựa vào nó để tạo 1 cấu trúc dữ liệu giúp ích cho việc lưu và load file. Vì mình không biết cấu trúc dữ liệu bạn cần nên mình chỉ làm thành từng list kết quả riêng, nhưng nó tuần tự kết quả nên bạn không cần lo, và code này phục vụ cho bạn khi bạn có nhiều sách hơn trong ds.

 //Lấy danh sách các quyển sách trong ds
            XDocument xdoc = XDocument.Load(path);
            IEnumerable<XElement> sach = xdoc.Descendants("sach");

            //lấy thông tin
            List<string> id = new List<string>();
            List<int> soluong = new List<int>();
            List<int> donggia = new List<int>();

            foreach (var s in sach)
            {
                id.Add(s.Attribute("id").Value);
                soluong.Add(int.Parse(s.Element("soluong").Value));
                donggia.Add(int.Parse(s.Element("dongia").Value));
            }
            // các list lần lượt là các thông tin id, soluong, donggia của các cuốn sách nằm trong thẻ ds

để sử dụng code này bạn cần dùng 1 số đoạn code using như thế này:

using System.Linq;
using System.Xml.Linq;

vậy là có kết quả, bạn chỉ cần đổ dữ liệu theo cột tương ứng thôi.

Nếu được thì tick cho mình nha, có gì không hiểu cứ tick rồồi hỏi cx được :v

naruto1991 đã bình luận 02:04 23-07-2017

mình muốn load tất cả dữ liệu trong file chỉ lên một table duy nhất với file xml kiểu dữ liệu trong dữ liệu (như file xml trên là bảng tên sách nằm trong bảng sách) lúc đầu mình muốn load lên datagridview nhưng làm một hồi không ra nên mình chọn list view thì đã load lên được nhưng lại vướng cái này mình viết file xml mới 

<?xml version="1.0" encoding="utf-8" ?> 
<ds>
  <un:sach id="123">
    <masach>s1</masach>
    <tensach>
      <s>sinh</s>
      <h>hoa</h>
    </tensach>
    <soluong>0</soluong>
    <dongia>0</dongia>
  </un:sach>
<un:sach id="222">
    <masach>s1</masach>
    <tensach>
      <s>sinh</s>
      <h>hoa</h>
    </tensach>
    <soluong>0</soluong>
    <dongia>0</dongia>
  </un:sach>
 </ds>

thì trong C# nó báo lỗi namespace prefix 'un' is defined, nên khi mình viết cod cho winform thì code như thế nay:

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;
using System.Xml;
using System.Xml.Linq;

namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static string path = "..\\..\\cm_exp_20170712_221837.xml";
        private void Form1_Load(object sender, EventArgs e)
        {
            
            DataSet dataSet = new DataSet();
            dataSet.ReadXml(path);
            DataTable dt = new DataTable();
            DataTable ts = new DataTable();
            dt = dataSet.Tables["un:sach"];
            ts = dataSet.Tables["tensach"];
            int i = 0;
            int y = 0;
            
            foreach (DataRow dr in dt.Rows)
            {
                listView1.Items.Add(dr["id"].ToString());
                
                i++;
                
                
            }
            foreach (DataRow tsff in ts.Rows)
            {
                listView1.Items[y].SubItems.Add(tsff["s"].ToString());
                listView1.Items[y].SubItems.Add(tsff["h"].ToString());
                y++;
            }

        }
    }
}

thì nó báo lỗi "dt was null" tại chỗ foreach đầu tiên thì mình muốn hỏi làm cách nào để C# nhận 'un' trong file xml, tại công việc của mình sẽ gặp nhiều  file xml kiểu ký tự như thế nên mình muốn biết khắc phục như thế nào và mình cũng mới học lập trình nên có gì nói chuyện hơi ngu ngu khó hiểu mọi người thông cảm ^^

K9 SuperAdmin, KquizAdmin, KquizAuthor đã bình luận 18:56 22-07-2017

đọc câu hỏi k hiểu nổi

Câu hỏi mới nhất