DevTrain .NET Developers Home. Das Community Portal für ASP.NET, Visual Basic, C#
 
  Login Status: Hallo   Anmelden  Suche:  
Navigationslinks überspringen
Startseite
Artikel
Blogs
Foren
ClubClub erweitern

 
Ihre Optionen
Save
Mail
Print
Rate
 
Advertising
  SharePoint konferenz vom 24.-25. Februar 2010 im ehem. IMAX München

 
Navigationslinks überspringen
Autor:Rene Paschold

Controls finden und verwenden

Gerade als Umsteiger von ASP stellt sich häufig die Frage: Wie kann man Controls finden und deren Inhalt verwenden? Im folgenden Beispiel wird mittels einer HashTable ein DataRepeater gefüllt und entsprechend TextBoxen angezeigt. Dort können Zahlen eingegeben werden die bei Klick auf einen Button addiert werden.
 
Hier erstmal der ASPX Code:

<body>
 <form id="Form1" method="post" runat="server">
  <asp:label id="lblSumme" runat="server"></asp:label><br>
  <asp:repeater id="Repeater1" runat="server">
  <itemtemplate>
   <%# DataBinder.Eval(Container.DataItem, "value") %>
   <br>
   <asp:textbox id="summe" runat="server"></asp:textbox>
   <asp:rangevalidator id="rv1" runat="server" controltovalidate="summe"
   display="Dynamic" maximumvalue="10" minimumvalue="1" errormessage="Bitte einen Wert zwischen 1 und 10 eingeben!" type="Integer">*</asp:rangevalidator><hr>
  </itemtemplate>
  </asp:repeater>
  <asp:button id="btnSumme" runat="server" text="Berechnen"></asp:button><br>
  <br>
  <asp:validationsummary id="vs1" runat="server"></asp:validationsummary>   
 </form>
</body>

 
Code:

   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      If Not (IsPostBack) Then
         daten()
      End If
   End Sub

   Private Sub daten()
      Dim myHash As New Hashtable
      myHash.Add("0", "Wert1")
      myHash.Add("1", "Wert2")
      myHash.Add("2", "Wert3")
      Repeater1.DataSource = myHash
      Repeater1.DataBind()
   End Sub

   Private Sub btnSumme_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSumme.Click
      Dim summe As Integer
      ' Im Repeater die Controls durchlaufen
      ' Ein Schleifendurchlauf entspricht einer Zeile
      For Each c As Control In Repeater1.Controls
         ' Die entsprechende Zeile durchlaufen und auf
         ' Controls in der Zeile prüfen
         For i As Integer = 0 To c.Controls.Count - 1
            ' Wenn ein Control vom Typ TextBox ist dann
            ' casten und den Wert zu summe addieren
            If (TypeOf c.Controls(i) Is TextBox) Then
               Dim txt As TextBox = CType(c.Controls(i), TextBox)
               ' Prüfen ob die TextBox auch gefüllt wurde
               If Not (txt.Text = Nothing) Then
                  summe += CType(txt.Text, Integer)
               End If
            End If
         Next
      Next
      ' Dem Label Summe den Wert zuweisen
      lblSumme.Text = "<strong>Summe: " & summe.ToString() & "<br></strong>"
   End Sub

 
In der ersten For Schleife wird die Collection des Repeaters durchlaufen um die Controls einer jeweiligen Zeile zu ermitteln.
 
Die zweite For Schleife braucht man um die entsprechende Zeile zu durchlaufen.
 
Mit der If Abfrage wird geprüft ob es sich beim dem Control um eine TextBox handelt. Wenn dies der Fall ist wird das Control zur TextBox gecastet und der Wert addiert.
 
Am Ende der Schleifen wird die ermittelte Summe in ein Label geschrieben.

Diskutieren Sie in den Foren

SQLdays konferenz vom 24.-25. Februar 2010 im ehem. IMAX München