Я, кажется, бегаю по кругу и делаю это в последние часы.Как связать список с dataGridView?
Я хочу заполнить datagridview из массива строк. Я читал, что это невозможно напрямую, и что мне нужно создать настраиваемый тип, который содержит строку как общедоступное свойство. Так что я сделал класс:
public class FileName
{
private string _value;
public FileName(string pValue)
{
_value = pValue;
}
public string Value
{
get
{
return _value;
}
set { _value = value; }
}
}
это класс контейнера, и он просто имеет свойство со значением строки. Все, что я хочу сейчас, это строка, которая появится в datagridview, когда я привяжу его источник данных к списку.
Также у меня есть этот метод, BindGrid(), который я хочу заполнить datagridview. Вот оно:
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;
}
Наконец, проблема: массив строк заполняется в порядке, список создается в порядке, но я получаю пустой столбец в DataGridView. Я также попробовал datasource = list <> напрямую, вместо = bindingsource, еще ничего.
Я был бы очень признателен за совет, это сбило меня с ума.
Спасибо
Следует отметить, что в сетке будут отображаться только те общие поля в вашем объекте, которые являются свойствами.Другими словами, они должны иметь {get; задавать; } определены или они будут проигнорированы. – Shane