TemplateField in DetailsView zur Laufzeit erstellen

12/11/2007 - 10:43 von Stefan Dirks | Report spam
Hi NG,

ich möchte zur Laufzeit einem DetailsView ein Feld hinzufügen. Ich möchte
dabei möglichst große Kontrolle über dieses Feld haben und denke dass ein
TemplateField daher geeignet wàre.

Ich verwende unten stehenden Code und leider wird das TemplateField nicht
angezeigt (es, wird lediglich eine leere Zeile im DetailsView erzeugt).
Ich habe mich an das Beispiel von
http://forums.asp.net/p/1001702/1340219.aspx orientiert. Hier wird einem
Gridview zur Laufzeit ein TemplateField hinzfugefügt.

Gruß Stefan


Case "template"

Dim tf As New
System.Web.UI.WebControls.TemplateField

tf.ItemTemplate = New
AddTemplateToDetailsView(dvField)
tf.HeaderText = "Commands"


'Feld dem DetailsView hinzufügen
_dv.Fields.Add(tf)



Public Class AddTemplateToDetailsView

Implements ITemplate

Private m_Field As New DetailField


Public Sub New(ByVal _field As DetailField)

m_Field = _field

End Sub

Public Sub InstantiateIn(ByVal container As System.Web.UI.Control)
Implements System.Web.UI.ITemplate.InstantiateIn



Select Case m_Field.ItemType.ToLower()

Case "delete"

Dim lb As New LinkButton
lb.ID = "DeleteButton"
lb.Text = "Löschen"
lb.CausesValidation = False
lb.OnClientClick = "return confirm('Wirklich löschen?')"
lb.CommandName = "Delete"

container.Controls.Add(lb)

'Case "textbox" ...




Case Else

End Select


End Sub
End Class
 

Lesen sie die antworten

#1 Stefan Dirks
12/11/2007 - 16:34 | Warnen spam
Das Hinzufügen einer Template-Field-Spalte bei einem GridView funktioniert
bei mir übrigens.

Nur beim DetailsView geht's noch nicht. Zum Debuggen habe ich einen
Haltepunkt in der InstantiateIn-Methode beim DetailsView gesetzt, dieser
wird nicht einmal erreicht. Dabei sollte InstantiateIn - nach meinem
Verstàndnis - bei Aufruf des DetailsView.DataBinds ausgeführt werden.

Ähnliche fragen