VB.Code in Datarepeater

04/10/2007 - 11:11 von Martin Zimmermann | Report spam
Hallo zusammen.

Ich habe den Datarepeater auch schon benutzt, aber nur um ohne wenn und aber
Datenfelder abzufüllen:

<%#DataBinder.Eval(Container.DataItem, "IArtNr")%>

Nun möchte ich mit Entscheidungen und/oder Schleifen arbeiten. Meine
Versuche fürten bis jetzt zu nichts:

<% If DataBinder.GetDataItem("BildName").ToString <> "" Then

DataBinder.GetDataItem("BildName").ToString()

End If

%>

Wenn ich es aber Testweise vereinfache funktioniert es:

<% If "Hallo" = "Hallo" Then

msgbox("Hallo")

End If

%>

Also liegt es wohl bei der Ansprache der Daten. Ich habe etwas mühe mit dem
Verstàndniss - auch mit dem Gebrauch der Raute-Taste.


Über Google, wie auch in der Dokuentation vom Webdeveloper Express finde ich
nichts brauchbares zu diesem Problem.

Kann mir da jemand helfen, oder einen guten Link nennen, unter dem ich
Beispiele finde?

Vielen Dank und Gruss
Martin zimmermann
 

Lesen sie die antworten

#1 Samaschke, Karsten
04/10/2007 - 11:28 | Warnen spam
Moinsens,

Nun möchte ich mit Entscheidungen und/oder Schleifen arbeiten. Meine
Versuche fürten bis jetzt zu nichts:

<% If DataBinder.GetDataItem("BildName").ToString <> "" Then

DataBinder.GetDataItem("BildName").ToString()

End If

%>

Wenn ich es aber Testweise vereinfache funktioniert es:

<% If "Hallo" = "Hallo" Then

msgbox("Hallo")

End If

%>

Also liegt es wohl bei der Ansprache der Daten. Ich habe etwas mühe mit dem
Verstàndniss - auch mit dem Gebrauch der Raute-Taste.



Mach es Dir einfach und arbeite mit Methoden, die Du ansprichst:

<script runat="server">

''' <summary>
''' Gibt den Bildnamen zurück
''' </summary>
Protected Function GetImageName(ByVal data As DataRow) As String
' Bildnamen auslesen
Dim imageName As String = String.Empty
If Not IsNothing(data) AndAlso Not IsNothing(data("BildName")) Then
imageName = data("BildName")
End If

' Namen überprüfen
If imageName.Length > 0 Then
Return imageName
End If

' Nüscht drinne
Return "Kein Bild vorhanden"

End Function

</script>

Die Methode sprichst Du aus dem datengebundenen Steuerelement an und
übergibst dabei das entsprechende Objekt (bei VB kannst Du IMHO auch das
DirectCast-Gesabbel weglassen, ich mag es aber lieber als die implizite
Konvertierung):

<%# GetImageName(DirectCast(Container.DataItem, DataRow)) %>

Das macht es einfacher und besser zu handhaben.

Die Raute steht übrigens für die Datenbindungssyntax. Die wird spàter
ausgeführt, als die direkte Ausgabe (<%= ... %>). Die Angabe ohne Raute
oder Gleichheitszeichen meint einfach nur einen Codeblock.

Mit freundlichen Gruessen / Best regards

Karsten Samaschke
IT-Entwicklung, IT-Beratung, IT-Training
Web: http://www.ksamaschke.de
Blog: http://www.karsan.de
Lesen: http://www.xmldotnet.de

Ähnliche fragen