2010-06-01 33 views
6

Để bắt đầu, những gì tôi có là một ứng dụng Winforms đơn giản, chỉ với một nút lưu và tải, và với một điều khiển datagridview để giữ dữ liệu. Những gì tôi muốn làm là nhập một số dữ liệu vào điều khiển, nhấn nút lưu và lưu tất cả dữ liệu vào một tệp cục bộ trên máy tính và khi tôi tải, nó tải tệp và điền điều khiển một cách thích hợp, giữ tất cả các hàng, cột và dữ liệu giống như khi được lưu.C# - Lưu một DataGridView vào tập tin và tải

Mặc dù nó có vẻ khá đơn giản với tôi, tôi không thể dường như tìm ra cách tốt để lưu và tải dữ liệu. Tôi có thể lấy một vài gợi ý hay ví dụ để bắt đầu?

Cảm ơn bạn.

Trả lời

7

Liên kết DataGridView với một DataTable và sử dụng các phương thức DataTable ReadXml()WriteXml() để đọc và ghi dữ liệu vào tệp.

Nếu bạn có nhiều lưới liên kết với nhiều bảng có liên quan, bạn có thể biểu diễn lược đồ bằng Tập dữ liệu và sử dụng phương pháp ReadXml()WriteXml() của Số liệu để đọc và viết toàn bộ lược đồ.

Có ví dụ trên trang MSDN cho DataTable.WriteXml() mà bạn có thể thấy hữu ích.

3

tôi đã thử nghiệm một cách đơn giản để tiết kiệm datagridview vào một tệp:

//DataGridView dgv=... 
string file= "c:\\mygrid.bin"; 
using (BinaryWriter bw = new BinaryWriter(File.Open(file, FileMode.Create))) 
{ 
    bw.Write(dgv.Columns.Count); 
    bw.Write(dgv.Rows.Count); 
    foreach (DataGridViewRow dgvR in dgv.Rows) 
    { 
     for (int j = 0; j < dgv.Columns.Count; ++j) 
     { 
      object val=dgvR.Cells[j].Value; 
      if (val == null) 
      { 
       bw.Write(false); 
       bw.Write(false); 
      } 
      else 
      { 
       bw.Write(true); 
       bw.Write(val.ToString()); 
      } 
     } 
    } 

và cho tải một tập tin vào một DataGridView:

//DataGridView dgv = ... 
dgv.Rows.Clear(); 
string file="c:\\mygrid.bin"; 
using (BinaryReader bw = new BinaryReader(File.Open(file, FileMode.Open))) 
{ 
    int n=bw.ReadInt32(); 
    int m=bw.ReadInt32(); 
    for(int i=0;i<m;++i) 
    { 
     dgv.Rows.Add(); 
     for (int j = 0; j < n; ++j) 
     { 
       if (bw.ReadBoolean()) 
       {           
        dgv.Rows[i].Cells[j].Value = bw.ReadString();           
       } 
       else bw.ReadBoolean(); 
      } 
    } 
} 

Hãy xem xét rằng tôi đã giả định rằng sự kiểm soát DataGridView có cột cố định, trong trường hợp cụ thể bạn nên thêm một số mã để chèn cột mới hoặc tạo lưới xem mới.

Các vấn đề liên quan