Tôi dường như đang chạy vòng tròn và đã làm như vậy trong những giờ qua.Cách liên kết danh sách với dataGridView?
Tôi muốn điền một khung nhìn dữ liệu từ một chuỗi các chuỗi. Tôi đã đọc nó không thể trực tiếp, và tôi cần tạo một kiểu tùy chỉnh chứa chuỗi như là một thuộc tính công cộng. Vì vậy, tôi đã thực hiện một lớp học:
public class FileName
{
private string _value;
public FileName(string pValue)
{
_value = pValue;
}
public string Value
{
get
{
return _value;
}
set { _value = value; }
}
}
đây là lớp chứa và chỉ đơn giản là có thuộc tính với giá trị của chuỗi. Tất cả những gì tôi muốn bây giờ là chuỗi xuất hiện trong datagridview, khi tôi liên kết nguồn dữ liệu của nó với một Danh sách.
Ngoài ra tôi có phương pháp này, BindGrid() mà tôi muốn điền vào datagridview với. Đây là:
private void BindGrid()
{
gvFilesOnServer.AutoGenerateColumns = false;
//create the column programatically
DataGridViewTextBoxColumn colFileName = new DataGridViewTextBoxColumn();
DataGridViewCell cell = new DataGridViewTextBoxCell();
colFileName.CellTemplate = cell; colFileName.Name = "Value";
colFileName.HeaderText = "File Name";
colFileName.ValueType = typeof(FileName);
//add the column to the datagridview
gvFilesOnServer.Columns.Add(colFileName);
//fill the string array
string[] filelist = GetFileListOnWebServer();
//try making a List<FileName> from that array
List<FileName> filenamesList = new List<FileName>(filelist.Length);
for (int i = 0; i < filelist.Length; i++)
{
filenamesList.Add(new FileName(filelist[i].ToString()));
}
//try making a bindingsource
BindingSource bs = new BindingSource();
bs.DataSource = typeof(FileName);
foreach (FileName fn in filenamesList)
{
bs.Add(fn);
}
gvFilesOnServer.DataSource = bs;
}
Cuối cùng, vấn đề: mảng chuỗi điền ok, danh sách được tạo ok, nhưng tôi nhận được một cột trống trong chế độ xem dữ liệu. Tôi cũng đã thử nguồn dữ liệu = danh sách <> trực tiếp, thay vì = bindingsource, vẫn không có gì.
Tôi thực sự đánh giá cao lời khuyên, điều này đã khiến tôi phát điên.
Cảm ơn bạn
Một điều cần lưu ý, chỉ những trường công khai trong đối tượng của bạn là thuộc tính sẽ hiển thị trong lưới.Nói cách khác, họ cần phải có {get; bộ; } được xác định hoặc chúng sẽ bị bỏ qua. – Shane