2009-05-31 3 views
0

У меня было несколько вопросов по этому вопросу, все еще возникающих проблемы.ASP.NET Найти DropDown Value Inside Repeater Control Часть II

Я хочу найти значения из нескольких выпадающих и текстовых элементов управления внутри элемента управления ретранслятора.

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 и AdFullName, похоже, не переносят значения. Ошибок нет, поэтому они нашли контроль в порядке. Ниже приведен код файла 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> 

Edit:

Repeater построен на странице загрузки

Dim repeatTimes((TotalAdInsured - 1)) As Integer 

    myRepeater.DataSource = repeatTimes 
    myRepeater.DataBind() 

DirectCast делается на кнопку мыши

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

Ответ: Если бы поставить IsPostBack вокруг р epeater Строительство.

If Not IsPostBack() Then 

     Dim repeatTimes((TotalAdInsured - 1)) As Integer 

     myRepeater.DataSource = repeatTimes 
     myRepeater.DataBind() 

    End If 
+1

@Mark: дважды будет проблема (опечатка?). Не могли бы вы также указать события, связанные с ретранслятором или страницей? –

+0

Hi Kb, ive обновил вопрос выше. – 2009-05-31 18:19:22

ответ

1

Во-первых, я думаю, что вы хотите:

myDropDown.SelectedItem.Text 

Скорее, чем

myDropDown.Text 

Также у вас есть два ItemTemplates? Я не знал, что вы могли бы это сделать ...

Вы взаимодействуете с любым текстовым полем или DropDowns в любой другой точке жизненного цикла страницы?

Попробуйте установить проверку PostBack вокруг привязки репитера. Я думаю, что происходит то, что вы загружаете элементы управления динамически, поэтому у них нет viewstate, поэтому значения всегда будут пустыми.

+0

просто два, чтобы подчеркнуть, что его повторили. В моем коде есть только один. Прости. – 2009-05-31 18:11:24

+1

вы также можете сделать myDropDown.SelectedText или myDropDown.SelectedValue для значения – Jason

+0

Значения текстового поля не проходят, поэтому я не уверен, что причина. – 2009-05-31 18:42:59

0

Убедитесь, что вы используете свой код в правильной точке жизненного цикла страницы. Если вы делаете это слишком рано (например, в OnInit), то он еще не будет иметь значений от клиента. Попробуйте переместить его в свое событие OnCommand()/OnSubmit() и посмотреть, что произойдет. Вот некоторые ссылки на страницы ASP.NET жизненного цикла:

  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/Page-Life-Cycle.aspx
  4. Picture of asp.net page life cycle
+0

Hi Adam, код запускается нажатием кнопки. TransactionID берется из скрытого поля над контроллером ретранслятора ok и вставляется в таблицу db. Есть ли что-то, что я могу сделать, чтобы проверить, что значение передается? – 2009-05-31 17:46:00

Смежные вопросы