添加CSS以在asp:Repeater中显示所选项

时间:2017-11-30 19:19:19

标签: c# css asp.net

是否可以在asp:Repeater中为所选项添加CSS?我正在尝试加粗所选项目。我尝试使用OnClientClick但无法使其工作。

这是我的asp:Repeater LinkBut​​ton代码:

                        <asp:Repeater ID="rptFeatures" runat="server" OnItemCommand="listItem_ItemCommand">
                        <ItemTemplate>
                            <asp:LinkButton runat="server" Text='<%# Eval("Name") %>' CommandName="getFeatures"  CommandArgument='<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>'></asp:LinkButton><br />
                        </ItemTemplate>
                    </asp:Repeater>
  

更新:使用Laslos的建议(谢谢),我更新了我的模板:

                        <asp:Repeater ID="rptFeatures" runat="server" OnItemCommand="listItem_ItemCommand">
                        <ItemTemplate>
                            <div id="<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>"  onclick="javascript:addClass('<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>')">
                                <asp:LinkButton runat="server" Text='<%# Eval("Name") %>' CommandName="getFeatures"  CommandArgument='<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>'></asp:LinkButton><br />
                            </div>
                        </ItemTemplate>
                    </asp:Repeater>

并添加了功能:

        function addClass(control) {
        $('#' + control).addClass('selected');
    }

它会简要地更新课程,但在回发完成后会立即丢失。任何有任何其他建议的人都非常感谢。

2 个答案:

答案 0 :(得分:1)

这是最终奏效的(对于任何可能发现他们需要这个的人)。我在页面中添加了一个asp:HiddenField:

  <asp:HiddenField ID="SelectedItem" runat="server" />

在代码隐藏中的_ItemCommand中,我将隐藏字段的值设置为所选链接的ID:

        protected void listItem_ItemCommand(Object source, RepeaterCommandEventArgs e)
    {
        SelectedItem.Value = e.CommandArgument.ToString();

将以下内容添加到document.ready函数:

            var selectedItem= $("[id*=SelectedItem]").val();
        $('#' + selectedItem).addClass('selected');

我真的希望这有助于其他人,因为经过大量的互联网搜索,我找不到答案。再次感谢@Laslos,没有你就不可能做到!

答案 1 :(得分:0)

您应该能够在不需要隐藏字段的情况下简化此操作。

类似的东西:

<强> ASPX

<asp:Repeater ID="rptFeatures" runat="server" OnItemCommand="listItem_ItemCommand">
   <ItemTemplate>
      <asp:LinkButton runat="server" Text='<%# Eval("Name") %>' CommandName="getFeatures"  CommandArgument='<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>'></asp:LinkButton><br />
   </ItemTemplate>
</asp:Repeater>

<强> C#

protected void listItem_ItemCommand(Object source, RepeaterCommandEventArgs e)
{
    string exisitingClass = (LinkButton)source).CssClass + " ";
    ((LinkButton)source).CssClass = exisitingClass.Trim() + "selected";
}

现在你要做的就是创建你的CSS类。

注意可能需要进行一些调试,这是未经测试的,并且不在我的掌控之中。