DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Rene Paschold Artikel Drucken
        
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.

DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 01.04.2003
  Gültig bis: 01.05.2003
4 Ratings
Bewertung: 80,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG