Posts
251
Comments
74
Trackbacks
4
Textbox im Repeater auslesen

Kürzlich hatte ich in einem Shop-System das Problem in einem Repeater die zu einem Artikel angegebene Stückzahl für die weitere Verarbeitung einzulesen.

Die ID der Textbox im Repeater kann man nicht dynamisch vergeben, <asp:TextBox ID="<%#eval("wert")%>" runat="server"> geht also nicht.

Mein Lösungsweg war der folgende:

Einer Funktion (insertWK) wird mit CommandArgument ein Wert übergeben (in meinem Fall die Artikelnummer):

<asp:LinkButton ID="linkbutton" CommandArgument='<%#Eval("artnr")%>' runat="server" oncommand="insertWK">

  • in einer Schleife die Zeilen des Repeaters einzelnen durchgehen
  • in dieser Zeile den Wert des Textfeldes einlesen
  • in dieser Zeile den Wert des Commandargument des Linkbuttons einlesen
  • wenn der Wert des Commandargumentes dieser Zeile mit dem an die Funktion übergebenen Wert übereinstimmt, dann steht in der Textbox dieser Zeile des Repeaters die eingegebene Anzahl zu diesem Artikel
  • der Wert kann dann weiterverarbeitet werden

Und hier der Quellcode der Funktion:

Sub insertWK(ByVal sender As Object, ByVal e As CommandEventArgs)

   Dim artnr As String
   Dim str, anzahl As String
   Dim i As Int16
   artnr = e.CommandArgument.ToString()

   '*** jede Zeile des Repeaters durchgehen
   For Each con As Control In Repeater1.Controls

      anzahl = ""

      '*** Controls dieser Zeile durchgehen
      For i = 0 To con.Controls.Count - 1

         If (TypeOf con.Controls(i) Is TextBox) Then
            Dim txt As TextBox = CType(con.Controls(i), TextBox)
            anzahl = txt.Text
         End If

         If (TypeOf con.Controls(i) Is LinkButton) Then
            Dim link As LinkButton = CType(con.Controls(i), LinkButton)

            '***wenn in der richtigen Zeile
            If artnr = link.CommandArgument.ToString Then

               Try
                  '*** gefunden 
                  anzahl = CType(anzahl.ToString, Integer)
   
                  ' Daten weiterverarbeiten

               Catch
                  MsgBox("Es wurde kein gültiger Wert eingegeben")
               End Try

            End If

         End If

      Next

   Next

End Sub

posted on Tuesday, April 11, 2006 1:59 PM Print
Comments
Gravatar
# 
alex
6/20/2007 9:10 AM
Warum so kompliziert?

Mit folgendenm C# Code (bin nicht so der VB Mensch)
System.Web.UI.WebControls.TextBox txt = System.Web.UI.WebControls.TextBox)e.Item.FindControl(&quot;TextBox1&quot;);

findet er automatisch die dazugeh&#246;rige Textbox.
Gravatar
# 
alex
6/20/2007 9:12 AM
Ups hab ne Klammer vergessen.. so ist es richtig:

System.Web.UI.WebControls.TextBox txt = (System.Web.UI.WebControls.TextBox)e.Item.FindControl(&quot;TextBox1&quot;);

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 5 and 7 and type the answer here: