38 messaggi dal 21 ottobre 2004
salve
non riesco a capire come modificare edititemtemplate di un detailview aggiunto da codice, per fare in modo che un campo memo mi venga editato con una textbox con textmode=multiline...

normalente riesco a farlo:
<asp:TemplateField HeaderText="pagina" SortExpression="pagina">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("pagina") %>' TextMode="MultiLine"
Width="700" Height="300"></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("pagina") %>' TextMode="MultiLine"
Width="700" Height="300"></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("pagina") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

ma come si traduce tutto questo quando si aggiunge una detailview da codice?
grazie
Beh, devi sostanzialmente creare una classe che implementi l'interfaccia ITemplate e, nel metodo InstantiateIn, creare tutti gli oggetti.

A quel punto assegni alla proprietà EditTemplate una nuova istanza di questo oggetto che hai creato.

Visto che comunque c'è da scrivere parecchio codice e ti tocca far tutto a mano, posso chiederti da cosa viene la tua necessità? Non potresti ad esempio utilizzare uno UserControl?

Marco
38 messaggi dal 21 ottobre 2004
ciao marco,
a me piace smanettare, sperimentare...
mi serve per fare uno usercontrol, che a secondo del campo, mi mostra una textbox multilinea o una textbox normale...
grazie del suggerimeto...

io vevo provato a fare così, ma non funge:

Dim tb As New TextBox
Dim tfield As New TemplateField
tfield.HeaderText = "Pagina"
tb = tfield.EditItemTemplate
'aa.Fields.Add(tfield)

...
Antonio
38 messaggi dal 21 ottobre 2004
ho risolto in questo modo... ma non mi fa l'update

....
Dim tfield As New TemplateField
tfield.EditItemTemplate = New addTextbox("pagina", 600, 400)
tfield.HeaderText = "Pagina"
myDetailsView.Fields.Add(tfield)
....


Friend Class addTextbox
Implements ITemplate

Dim nm As String
Dim la As Integer
Dim al As Integer

Public Sub New(ByVal nome As String, ByVal largh As Integer, ByVal alte As Integer)
nm = nome
la = largh
al = alte
End Sub


Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn
Dim myTextbox As New TextBox
myTextbox.ID = nm
myTextbox.TextMode = TextBoxMode.MultiLine
myTextbox.Width = la
myTextbox.Height = al
AddHandler myTextbox.DataBinding, AddressOf FirstNameLabel_DataBinding
container.Controls.Add(myTextbox)
End Sub

Private Sub FirstNameLabel_DataBinding(ByVal sender As Object, ByVal e As EventArgs)
Dim firstNameLabelControl As TextBox = CType(sender, TextBox)
Dim formViewContainer As DetailsView = CType(firstNameLabelControl.NamingContainer, DetailsView)
Dim rowView As DataRowView = CType(formViewContainer.DataItem, DataRowView)

firstNameLabelControl.Text = rowView(nm).ToString()

End Sub
End Class
Modificato da Antonio123 il 27 febbraio 2011 20.21 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.