Wir haben einige ASP.Net-dataview-Spaltenvorlagen, die dynamisch zur Datenansicht hinzugefügt werden, abhängig von den von Benutzern ausgewählten Spalten.Best Practice für dynamisch hinzugefügte Web.UI.ITemplate-Klassen
benötigen Diese Templat Zellen individuelle Databindings zu handhaben:
public class CustomColumnTemplate:
ITemplate
{
public void InstantiateIn(Control container)
{
//create a new label
Label contentLabel = new Label();
//add a custom data binding
contentLabel.DataBinding +=
(sender, e) =>
{
//do custom stuff at databind time
contentLabel.Text = //bound content
};
//add the label to the cell
container.Controls.Add(contentLabel);
}
}
...
myGridView.Columns.Add(new TemplateField
{
ItemTemplate = new CustomColumnTemplate(),
HeaderText = "Custom column"
});
Zunächst scheint dies eher chaotisch, aber es gibt auch eine Ressourcenfrage. Die Label
wird erzeugt, und kann nicht in der InstantiateIn
entsorgt werden, weil sie dann nicht zur Datenerfassung da wäre.
Gibt es ein besseres Muster für diese Kontrollen?
Gibt es eine Möglichkeit, um sicherzustellen, dass das Etikett nach der Datenbank und rendern?