Frage

ive hatte ein paar Fragen zu diesem Thema nach wie vor Probleme.

Ich mag die Werte aus einer Reihe von Drop-Down-und Textboxsteuerelemente in einem Repeater-Steuerelement zu finden.

db.ConnectionString = SystemConnString
    db.Open()

    Dim selectedAdTitle As String = ""
    Dim enteredAdFullName As String = ""

    cmd.Parameters.Add(New SqlParameter("@TransactionID", TransactionID))
    cmd.Parameters.Add(New SqlParameter("@AdTitle", selectedAdTitle))
    cmd.Parameters.Add(New SqlParameter("@AdFullName", enteredAdFullName))

    For i As Integer = 0 To myRepeater.Items.Count - 1

        Dim AdTitle As DropDownList = DirectCast(myRepeater.Items(i).FindControl("AdTitle"), DropDownList)
        Dim AdFullName As TextBox = DirectCast(myRepeater.Items(i).FindControl("AdFullName"), TextBox)

        selectedAdTitle = AdTitle.Text
        enteredAdFullName = AdFullName.Text

        cmd.Parameters("@AdTitle").Value = selectedAdTitle
        cmd.Parameters("@AdFullName").Value = enteredAdFullName

        SQL = ""
        SQL = SQL & "INSERT INTO InsuredPersons (TransactionID,Title,FullName) VALUES ("
        SQL = SQL & "@TransactionID,"
        SQL = SQL & "@AdTitle,"
        SQL = SQL & "@AdFullName"
        SQL = SQL & ")"

        cmd.CommandText = SQL
        cmd.Connection = db
        cmd.ExecuteNonQuery()
    Next

AdTitle und AdFullName scheinen nicht über die Werte zu bringen. Es gibt keine Fehler, so dass sie die Kontrolle ok gefunden haben. Im Folgenden finden Sie die ASPX-Datei Code.

<asp:Repeater ID="myRepeater" runat="server">
    <ItemTemplate>
        <asp:DropDownList ID="AdTitle" runat="server">
            <asp:ListItem Selected="True" Value="" Text=""/>
            <asp:ListItem Selected="False" Value="Miss" Text="Miss"/>
            <asp:ListItem Selected="False" Value="Ms" Text="Ms"/>
            <asp:ListItem Selected="False" Value="Mrs" Text="Mrs"/>
            <asp:ListItem Selected="False" Value="Mr" Text="Mr"/>
            <asp:ListItem Selected="False" Value="Other" Text="Other"/>
        </asp:DropDownList>

       <asp:TextBox ID="AdFullName" runat="server"></asp:TextBox>
   </ItemTemplate>

Edit:

Repeater ist auf Seite Last konstruiert

    Dim repeatTimes((TotalAdInsured - 1)) As Integer

    myRepeater.DataSource = repeatTimes
    myRepeater.DataBind()

Direct auf Tastenklick gemacht

Protected Sub continueButtonDetails_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles continueButtonDetails.Click

Antwort: Hat um Repeater Construction setzen IsPostBack

.
If Not IsPostBack() Then

        Dim repeatTimes((TotalAdInsured - 1)) As Integer

        myRepeater.DataSource = repeatTimes
        myRepeater.DataBind()

    End If
War es hilfreich?

Lösung

Zunächst einmal ich glaube, Sie wollen:

myDropDown.SelectedItem.Text

lieber als

myDropDown.Text

Auch warum haben Sie zwei ItemTemplates? Ich wusste nicht, man konnte sogar das tun ...

Sind Sie mit einem der Textfelder oder Dropdowns an jedem anderen Punkt während des Seitenlebenszyklus interagieren?

Versuchen Sie, eine Postback Kontrolle um die Repeater Datenbindung setzen. Ich denke, was passiert Ihr Laden ist dynamisch die Steuerelemente, damit sie keine Ansichtszustand haben, daher sind die Werte immer leer sein.

Andere Tipps

Stellen Sie sicher, dass Sie den Code an der richtigen Stelle in der Seite Lebenszyklus ausgeführt werden. Wenn Sie es noch zu früh (zum Beispiel in der OnInit) tun, dann wird es nicht die Werte aus dem Client zugeordnet. Versuchen Sie es zu Ihrem OnCommand () / OnSubmit () Ereignis zu bewegen und sehen, was passiert. Hier sind einige Hinweise auf ASP.NET Seite Lebenszyklus:

  1. http://msdn.microsoft.com/en-us/library /ms178472.aspx
  2. http://www.15seconds.com/issue/020102.htm
  3. http://www.beansoftware.com/ASP .NET-Tutorials / Seite-Life-Cycle.aspx
  4. Bild von asp.net Seite Lebenszyklus
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top