Pregunta

he tenido un par de preguntas sobre este tema, sigue teniendo problemas.

Quiero encontrar los valores de una serie de controles desplegables y cuadro de texto dentro de un control repetidor.

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 y AdFullName no se parecen estar llevando a través de los valores. No hay error por lo que han encontrado el control en buen estado. A continuación se muestra el código del archivo 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>

Editar:

Repeater se construye en carga de la página

    Dim repeatTimes((TotalAdInsured - 1)) As Integer

    myRepeater.DataSource = repeatTimes
    myRepeater.DataBind()

DirectCast se realiza en clic de botón

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

Respuesta: tenía que poner IsPostBack alrededor repetidor de construcción

.
If Not IsPostBack() Then

        Dim repeatTimes((TotalAdInsured - 1)) As Integer

        myRepeater.DataSource = repeatTimes
        myRepeater.DataBind()

    End If
¿Fue útil?

Solución

En primer lugar creo que quieres:

myDropDown.SelectedItem.Text

lugar de

myDropDown.Text

Además, ¿por qué tiene dos ItemTemplates? No sabía incluso se podría hacer eso ...

¿Está interactuando con cualquiera de los cuadros de texto o menús desplegables en cualquier otro momento durante el ciclo de vida de la página?

Trate de poner un cheque de devolución de datos alrededor del enlace de datos repetidor. Creo qué está sucediendo es su carga de los controles de forma dinámica, por lo tanto, no tienen ningún estado de vista, por lo tanto, los valores siempre estarán vacías.

Otros consejos

Asegúrese de que está ejecutando su código en el punto correcto en el ciclo de vida de la página. Si usted lo está haciendo demasiado pronto (por ejemplo en el OnInit) entonces no va a tener los valores desde el cliente todavía. Trate de mover a su caso bajo demanda () / OnSubmit () y ver qué pasa. Aquí hay algunas referencias en la página ASP.NET Ciclo de Vida:

  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-tutoriales / Página-Life-Cycle.aspx
  4. Foto del ciclo de vida de la página asp.net
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top