저는 VS2008에서 Windows Forms 응용 프로그램을 개발하고 있습니다. 나는 다음과 같은 코드를 사용하여 폼에 DataGridViews의 알 수없는, 그러나 적은 수를 표시하려면 :어떻게 동적으로로드 된 DataGridViews를 데이터 바인딩 할 수 있습니까?
foreach (QueryFilter f in Query.Filter)
{
DataGridView grid = CreateGridView(String.Format("GridView{0}", filters.Count));
grid.Location = new System.Drawing.Point(3, 9 + (filters.Count * grid.Height + 9));
BindingList<QueryFilterNode> nodes = new BindingList<QueryFilterNode>();
foreach (QueryFilterNode node in f)
nodes.Add(node);
grid.DataSource = nodes;
panel1.Controls.Add(grid);
filters.Add(nodes);
}
그리드 (들) 패널에 추가되지만 데이터는 내부에 표시되지 않습니다. 내 생각 엔 DataGridView_ColumnAdded 이벤트가 발생하지 않기 때문에 DataSource 속성을 그리드에 실제로 바인딩하지 않는다는 설정입니다.
QueryFilter 및 QueryFilterNode는 POCO이고 물론 데이터를 포함합니다. 완성도를 위해서
된 DataGridView의 건설 :
private DataGridView CreateGridView(string name)
{
DataGridView grid = new DataGridView();
grid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
grid.Name = name;
grid.Size = new System.Drawing.Size(484, 120);
grid.ColumnAdded += new System.Windows.Forms.DataGridViewColumnEventHandler(this.dataGridView_ColumnAdded);
return grid;
}
바인딩 된 BindingList는 무엇입니까? BindingList.DataSource 속성을 설정해야한다고 생각합니다. – NYSystemsAnalyst