Repeater不允许我访问按钮,下拉菜单等控件

时间:2011-05-20 09:39:40

标签: asp.net vb.net controls repeater

我正在使用转发器ListOfArticles并在其中设置控件,如ddlSizesbtnSelectArticle。通常,您只需双击控件即可在aspx.vb页面中指定操作。我听说过有关Findcontrol的一些内容,但无法弄清楚或找到我理解的很多信息。我不想听起来像屁股,但我真的更喜欢aspx.vb页面的帮助而不是C#或Javascript。

我尝试做的一个例子是,点击btnSelectArticle后,标签lblSelection会收到以下值Amount: txtAmount - Size: ddlSizes.SelectedValue

<asp:Repeater ID="rptListOfArticles" runat="server" DataSourceID="objdsArticleList">

<asp:DropDownList ID="ddlSizes" runat="server" AutoPostBack="True" DataSourceID="objdsSizes"  DataTextField="SizeName" DataValueField="SizeID" OnSelectedIndexChanged="ddlSizes_SelectedIndexChanged" />

<asp:Button ID="btnSelect" runat="server" Text="Select" OnClick="btnSelect_OnClick" />

<asp:Label ID="lblSelection" runat="server" Text=""></asp:Label>

在aspx.vb页面中,我只能选择此项,我的控件如ddlSizesbtnSelect无法识别。

Protected Sub rptListOfArticles_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rptListOfArticles.ItemCommand
End Sub

对解决方案的任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

您需要做的是使用FindControl方法在所选的转发器项目中查找特定控件。

所以一个例子是(在ItemCommand方法中)

Dim lblSelection as Label = CType(e.Item.FindControl("lblSelection"), Label)
lblSelection.Text = "Your Text"

编辑** 在评论中回答您的问题:

是的,要访问ddlSize DropDown的SelectedValue,您需要创建它:

Dim ddlSize As DropDownList = Ctype(e.Item.FindControl("ddlSize"), DropDownList)

当在Repeater中单击任何按钮时,Repeater将知道何时调用此方法。将CommandName添加到按钮,以便您可以控制ItemCommand方法中发生的事情。

e.g。

<asp:Button id="btnDoSomething" runat="server" text="Run ItemCommand" CommandName="Command1" />

在ItemCommand中使用代码:

If e.CommandName = "Command1" Then
    ' run your code
End If

答案 1 :(得分:1)

您可以在ItemCommand事件中处理下拉列表事件。事件冒泡概念来到这里实际上是儿童控制泡沫evenet到它的父亲,即转发器控制,所以你可以在父控制事件中处理它最终  有关详细信息HERE,您将深入了解转发器的所有事件