Domanda

Sto sviluppando un'applicazione Windows Form in VS2008. Voglio visualizzare un numero sconosciuto, ma piccolo di DataGridViews su un modulo, usando un codice come questo:

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);                    
}

Le griglie vengono aggiunte al pannello, ma i dati all'interno non vengono visualizzati. Suppongo che l'impostazione della proprietà DataSource non vincoli effettivamente la griglia, perché (ad esempio) l'evento dataGridView_ColumnAdded non viene generato.

QueryFilter e QueryFilterNode sono solo POCO e contengono dati ovviamente.

Per completezza, la costruzione di 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;
}
È stato utile?

Soluzione

Hmm, sembra che sia stato un mio errore. QueryFilterNode, utilizzato come origine dati (BindingList<QueryFilterNode>) non era un POCO ma un contratto dati. Snippet:

[DataContract(Name = "QueryFilterNode")]
public class QueryFilterNode
{
  [DataMember(IsRequired = true)]
  public string FieldCode;        

Per qualche ragione questi non possono essere databound. Ho usato una classe semplice come questa nella mia BindingList e ha funzionato.

class QueryFilterNodeSimple
{

  public string FieldCode
  { get; set; }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top