Вызовите кнопку или выпадающий список внутри ретранслятора - PullRequest
2 голосов
/ 22 мая 2011

У меня есть label и dropdownlist внутри repeater.Когда я нажимаю кнопку за пределами повторителя, я хочу получить доступ к значениям label.Text и ddl.SelectedIndex.

<asp:Repeater ID="rptProduct" runat="server" DataSourceID="objdsProduct" OnItemCommand="rptProduct">
   <ItemTemplate>
   <div>
      <div>
         <asp:Label ID="lblProdName" runat="server" Text='<%# Eval("ProductName") %>'></asp:Label>
      </div>
      <div>
         <asp:DropDownList ID="ddlSize" runat="server" AutoPostBack="False" DataSourceID="objdsSize"  DataTextField="SizeName" AppendDataBoundItems="True" DataValueField="SizeID">
            <asp:ListItem Text="select a size" Value=0></asp:ListItem>
         </asp:DropDownList>
   </div>
   </ItemTemplate>
</asp:Repeater>

<asp:Button ID="btnChoose" runat="server" Text="Choose Products" />

Любые предложения о том, как получить доступ к lblProdName.Text и ddlSize.SelectedValue в пределах:

Protected Sub btnChoose_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnChoose.Click

   Dim ProductName
   Dim Size

End Sub

Спасибо за ваше время.

Ответы [ 3 ]

1 голос
/ 22 мая 2011

Вы должны повторять строки повторителя ....

protected void btnChoose_Click(object sender, EventArgs e)
{
    foreach (RepeaterItem item in Repeater1.Items)
    {
       Label lblProdName = item.FindControl("lblProdName") as Label;
       lblProdName.Text .........
       DropDownList ddlSize = item.FindControl("ddlSize") as DropDownList;
       ddlSize.SelectedValue .........

    }
}
1 голос
/ 22 мая 2011

Добавьте это к вашему нажатию кнопки:

Dim item As RepeaterItem
For Each item In  rptProduct.Items
    Dim ProductName As String = DirectCast(item.FindControl("lblProdName"), Label).Text   
Dim Size As Integer = (DirectCast(item.FindControl("ddlSize"), DropDownList).SelectedValue
Next item
1 голос
/ 22 мая 2011
  Dim ProductName As String = DirectCast(rptProduct.FindControl("lblProductName"), Label).Text
  Dim Size As Integer = DirectCast(rptProduct.FindControl("ddlSize"), DropDownList).SelectedValue

Но ... как вы собираетесь определить, от какого элемента в повторителе вы хотите получить значения?

Посмотрите на эту страницу MSDN , а именно этот бит:

Sub R1_ItemCommand(Sender As Object, e As RepeaterCommandEventArgs)
    Label2.Text = "Button " & _
        Repeater1.Items(e.Item.ItemIndex).ItemIndex.ToString() & _
        " has just been clicked! <br />"
End Sub
...