У меня есть следующий код, но DatGridView показывает мне пустые строки. Я не могу найти решение. Я установил AutoGenerateColumns
на false
. Если я установлю его на true
, он создаст строки, но мне не разрешено устанавливать это свойство на true
(желание клиента).
Что я делаю не так? Вот код:
public partial class Form1 : Form
{
private List<AStruct> _aCollectionList;
private BindingList<AStruct> _aCollectionBindingList;
public struct AStruct
{
public string ACode
{
get { return _aCode; }
set { _aCode = value; }
}
public string AName
{
get { return _aName; }
set { _aName = value; }
}
private string _aCode;
private string _aName;
}
public Form1()
{
InitializeComponent();
this.dataGridView1.AutoGenerateColumns = false;
}
private void button1_Click(object sender, EventArgs e)
{
_aCollectionList = new List<AStruct>();
FillCollectionStruct(true);
dataGridView1.DataSource = _aList;
dataGridView1.Refresh();
}
private void button2_Click(object sender, EventArgs e)
{
_aCollectionBindingList = new BindingList<AStruct>();
FillCollectionStruct(false);
dataGridView1.DataSource = _aBindingList;
dataGridView1.Refresh();
}
private void FillCollectionStruct(bool listBool)
{
AStruct aStruct = new AStruct();
for (int i = 0; i < 10; i++)
{
aStruct.ACode = i.ToString();
aStruct.AName = i.ToString();
if (listBool)
_aCollectionList.Add(aStruct);
else
_aCollectionBindingList.Add(aStruct);
}
}
}
В Form1.Designer я делаю следующие столбцы:
//
// aCodeColumn
//
this.colorCodeColumn.DataPropertyName = "Code";
this.colorCodeColumn.HeaderText = "a code";
this.colorCodeColumn.Name = "aCodeColumn";
//
// aNameColumn
//
this.colorNameColumn.DataPropertyName = "Name";
this.colorNameColumn.HeaderText = "a name";
this.colorNameColumn.Name = "aNameColumn";