2008-11-20 7 views
7

Ich habe eine Situation, in der ich mit einem Datagrid arbeiten und dynamisch Spalten in PageInit hinzufügen muss, da das Raster ein paar bedingte Anforderungen hat, die es behandeln muss. Ich komme einfach mit BoundColumns und ButtonColumns voran, die sind einfach. Das Problem liegt in der Erstellung einer TemplateColumn über Code. Ich habe Beispiele dafür gefunden, wie eine benutzerdefinierte Klasse erstellt wird, die Steuerelemente dynamisch hinzufügt, indem eine Klasse erstellt wird, die eine Implementierung von ITemplate verwendet. Das funktioniert jedoch, ich habe Probleme damit, Elemente zu daten.ITemplate und DataGrid-Spalte in Codebehind

In meinem Raster hätte ich <% = DataBinder.Eval (Container.DataItem, "MyValue")%> oder ähnliches verwendet, aber das ist keine Option hier. Der Container innerhalb von ITemplate hat auch keine Datenelementeigenschaft, daher kann ich dort nicht binden. Jeder hat Rat oder Links, die helfen könnten, ich finde nur nicht die richtigen Dinge in Google.

Antwort

8

Sie können einen Ereignishandler an das DataBinding-Ereignis der Steuerelemente anfügen, die Sie in ITemplate.InstantiateIn wie in this MSDN Article erstellen. Der Absender ist das Steuerelement und die NamingContainer-Eigenschaft ist das DataGridItem, das einen Verweis auf das DataItem enthält, mit dem Sie die gewünschten Daten abrufen können.

+0

Super! Das ist der Artikel, nach dem ich gesucht habe. Was für eine wichtige PITA, um dies zu tun .... –

+0

+1 für nützliche Link, Es ist auch gut, einen Blick auf diese eine http://aspalliance.com/1125_Dynamically_Templated_GridView_with_Edit_Delete_and_Insert_Options.3 –

Verwandte Themen