Domanda

Ive ha avuto alcune domande su questo argomento, ancora problemi.

Voglio trovare i valori da una serie di controlli a discesa e TextBox in un controllo ripetitore.

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 e AdFullName non sembrano essere portare attraverso i valori. Non v'è alcun errore in modo che hanno trovato il controllo ok. Di seguito è riportato il codice del file ASPX.

<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>

Modifica:

Repeater è costruito su caricamento della pagina

    Dim repeatTimes((TotalAdInsured - 1)) As Integer

    myRepeater.DataSource = repeatTimes
    myRepeater.DataBind()

DirectCast è fatto su clic del pulsante

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

Risposta: ha dovuto mettere IsPostBack intorno Ripetitore Edilizia

.
If Not IsPostBack() Then

        Dim repeatTimes((TotalAdInsured - 1)) As Integer

        myRepeater.DataSource = repeatTimes
        myRepeater.DataBind()

    End If
È stato utile?

Soluzione

Prima di tutto credo che si desidera:

myDropDown.SelectedItem.Text

piuttosto che

myDropDown.Text

Anche perché hai due ItemTemplates? Non sapevo che si potrebbe anche farlo ...

Stai interagendo con una qualsiasi delle caselle di testo o DropDowns in qualsiasi altro punto nel corso del ciclo di vita pagina?

Prova a mettere un assegno PostBack intorno alla associazione dati ripetitore. Penso che che cosa sta accadendo è il vostro carico i controlli in modo dinamico, quindi non hanno ViewState, quindi, i valori saranno sempre vuota.

Altri suggerimenti

Assicurati che il tuo sono in esecuzione il codice nel punto corretto nel ciclo di vita pagina. Se si sta facendo troppo presto (per esempio nel OnInit) allora non avrà ancora i valori del cliente. Provare a spostare al vostro OnCommand () / OnSubmit) evento (e vedere cosa succede. Qui ci sono alcuni riferimenti sulla pagina ASP.NET ciclo di vita:

  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 / pagina-life-Cycle.aspx
  4. Immagine di ciclo di vita asp.net pagina
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top