【问题标题】:How do I access every item in a repeater that is not the one being select?如何访问中继器中不是被选择的每个项目?
【发布时间】:2013-07-03 14:58:49
【问题描述】:

已排序。我在 Page_Load 中添加了以下内容。这么简单

For Each thingy As RepeaterItem In uxMaterialNeedsRepeater.Items
    Dim uxRepeaterItemPanel As Panel = CType(thingy.FindControl("uxRepeaterItemPanel"), Panel)
    uxRepeaterItemPanel.BackColor = Nothing
Next

我有一个中继器

<asp:Repeater runat="server" ID="uxMaterialNeedsRepeater">

    <ItemTemplate>

            <p>

                <asp:Panel runat="server" ID="uxRepeaterItemPanel">

                    <asp:LinkButton runat="server" ID="uxMaterialNeedLinkButton" CssClass="Label" CommandName="Select" CommandArgument='<%#Eval("ID")%>'>Select</asp:LinkButton>

                    <%#ReturnListOfMaterials(Container.DataItem)%>

                </asp:Panel>

            </p>

    </ItemTemplate>

</asp:Repeater>

当用户单击生成 ItemCommand 的 LinkBut​​ton 时,我会突出显示用户选择的“行”

Protected Sub uxMaterialNeedsRepeater_ItemCommand(source As Object, e As System.Web.UI.WebControls.RepeaterCommandEventArgs) Handles uxMaterialNeedsRepeater.ItemCommand

    If e.CommandName = "Select" Then

        '   Highlight the selected row
        Dim uxRepeaterItemPanel As Panel = CType(e.Item.FindControl("uxRepeaterItemPanel"), Panel)
        uxRepeaterItemPanel.BackColor = Drawing.Color.LightGreen

    End If

End Sub

但如果他们选择另一行,那么我将突出显示两行(突出显示?),我想取消突出显示原始行。所以我的想法是首先自动取消突出显示所有行。

我该怎么做?

我已经尝试了一些方法,包括在 ItemCreated 事件中设置它,但这也不起作用。

Protected Sub uxMaterialNeedsRepeater_ItemCreated(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles uxMaterialNeedsRepeater.ItemCreated

    '   Remove any highlighting from all rows
    Dim uxRepeaterItemPanel As Panel = CType(e.Item.FindControl("uxRepeaterItemPanel"), Panel)
    uxRepeaterItemPanel.BackColor = Nothing

End Sub

【问题讨论】:

  • 这让我更近了一步。我需要做的是:For Each thingy As RepeaterItem In uxMaterialNeedsRepeater.Items Dim uxRepeaterItemPanel As Panel = CType(e.Item.FindControl("uxRepeaterItemPanel"), Panel) uxRepeaterItemPanel.BackColor = Nothing Next 但我不知道我可以把它放在什么事件中。
  • 这个问题解决了吗?如果是,您可以发布您的解决方案作为答案,以便其他人可以从您的经验中受益。
  • 干杯@ShaiCohen 我没有意识到我能做到这一点。

标签: asp.net repeater


【解决方案1】:

这实际上是一个非常简单的修复。

我在页面加载时遍历了中继器项目,并首先重置了每个面板控件的背景颜色。

For Each thingy As RepeaterItem In uxMaterialNeedsRepeater.Items
    Dim uxRepeaterItemPanel As Panel = CType(thingy.FindControl("uxRepeaterItemPanel"), Panel)
    uxRepeaterItemPanel.BackColor = Nothing
Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2018-08-12
    • 2019-08-08
    相关资源
    最近更新 更多