Pergunta

Eu tive algumas perguntas sobre o assunto, continua a ter problemas.

Eu quero encontrar os valores de uma série de controles suspensos e caixa de texto dentro de um controle de repetidora.

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 não parecem estar trazendo através dos valores. Não há nenhum erro para que eles tenham encontrado o ok controle. Abaixo está o código arquivo 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 é construído no carregamento da página

    Dim repeatTimes((TotalAdInsured - 1)) As Integer

    myRepeater.DataSource = repeatTimes
    myRepeater.DataBind()

DirectCast é feito em clique do botão

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

Resposta:. Tinha que colocar IsPostback torno Repeater Construção

If Not IsPostBack() Then

        Dim repeatTimes((TotalAdInsured - 1)) As Integer

        myRepeater.DataSource = repeatTimes
        myRepeater.DataBind()

    End If
Foi útil?

Solução

Em primeiro lugar eu acho que você quer:

myDropDown.SelectedItem.Text

em vez de

myDropDown.Text

Além disso, por que você tem duas ItemTemplates? Eu não sabia que você poderia mesmo fazer isso ...

Você está interagindo com qualquer uma das caixas de texto ou DropDowns em qualquer outro momento durante o ciclo de vida de página?

Tente colocar um PostBack verificar em torno da ligação de dados repetidor. Eu acho que o que está acontecendo é o seu carregamento dos controles dinamicamente, portanto, eles não têm viewstate, portanto, os valores serão sempre vazia.

Outras dicas

Verifique se o seu está executando o código no ponto correto no ciclo de vida da página. Se você está fazendo isso muito cedo (por exemplo, no OnInit), então não vai ter os valores do cliente ainda. Tente movê-lo para o seu OnCommand () / OnSubmit () evento e ver o que acontece. Aqui estão algumas referências sobre ASP.NET página 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-Tutoriais / Página-Life-Cycle.aspx
  4. Imagem de ciclo asp.net página vida
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top