我正在使用转发器ListOfArticles
并在其中设置控件,如ddlSizes
和btnSelectArticle
。通常,您只需双击控件即可在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页面中,我只能选择此项,我的控件如ddlSizes
和btnSelect
无法识别。
Protected Sub rptListOfArticles_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles rptListOfArticles.ItemCommand
End Sub
对解决方案的任何帮助都会很棒!
答案 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,您将深入了解转发器的所有事件