通过jquery

时间:2015-10-08 21:15:12

标签: jquery asp.net

我有一个表(asp:Repeater),我想根据特定列中的数据进行过滤。有问题的列包含创建引用(行)的用户,我希望用户只在页面加载时查看其行。我计划在顶部设置一个btn-group,将Mine和All作为选项,这样我可以在两种模式之间切换。

"所有"应该很容易弄清楚,一旦我得到第一个,但我不熟悉jQuery,我找不到一个很好的方法来做到这一点。我看到的只是按类过滤。

任何建议/方向将不胜感激。提前致谢! 不要给我建议/指导。我绝对不想要那样。

编辑:这里的代码让一些人快乐...

function pageLoad(sender,args)
    {
        var rows = $('table#quotes tr').rows;

        $('input[type=submit]#myQuotes').click(function () {
            if (!$('#myQuotes').hasClass('active'))
            {
                //filter Repeater based on Owner Column
                $('#myQuotes').toggleClass('active');
                $('#allQuotes').toggleClass('active');
            }
        });
        $('input[type=submit]#allQuotes').click(function () {
            if (!$('#allQuotes').hasClass('active')) {
                $('#allQuotes').toggleClass('active');
                $('#myQuotes').toggleClass('active');
            }
        });
    }
</script>

这里是转发器

<asp:Repeater ID="repQuotes" runat="server" OnItemCommand="repQuotes_ItemCommand"> 
        <HeaderTemplate>
            <table id="quotes" style="width:100%">
                <thead>
                    <tr style="font-weight: bold"><td>Customer</td><td>Company</td><td>Date</td><td>Owner</td><td>Number</td><td>Total</td><%if(User.IsInRole("Admin")){ %><td>Delete</td><%} %></tr>
                </thead>
                <tbody>
        </HeaderTemplate>
        <ItemTemplate>

                <tr>
                    <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("Id") %>'/>
                    <td><asp:LinkButton ID="QuoteCustomer" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Customer.Contact") %>' CommandName="Choose" CommandArgument='<%# Eval("Id") %>'/></td>
                    <td><asp:Label ID="QuoteCompany" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Customer.Company") %>' /></td>
                    <td><asp:Label ID="QuoteDate" runat="server" Text='<%#Eval("Date") %>' /></td>
                    <td><asp:LinkButton ID="Owner" runat="server" Text='<%#Eval("Owner") %>' CommandName="Email" CommandArgument='<%# Eval("Owner") %>'/></td>
                    <td><asp:Label ID="QuoteEmail" runat="server" Text='<%# Eval("PhoneNumber") %>' /></td>
                    <td><asp:Label ID="QuoteTotal" runat="server" Text='<%# GetGrandTotalString((QuoteForm.Models.Quote)Container.DataItem) %>' /></td>
                    <%if(User.IsInRole("Admin")){ %>
                    <td><asp:Button ID="Delete" runat="server" Text="Delete" class="btn btn-danger" CommandName="Delete" CommandArgument='<%# Eval("Id") %>'/></td>
                    <%} %>
                </tr>
        </ItemTemplate>
        <FooterTemplate>
            </tbody>
            </table>
        </FooterTemplate>
    </asp:Repeater>

1 个答案:

答案 0 :(得分:1)

这是你实现这一目标的一种方式。

在您的代码(或服务器脚本)中添加一个将返回字符串的函数。该字符串将代表一个类。

public string QuoteClass(string user)
{
    return (user == User.Name) ? "myquote" : "otherquote";
}

然后在转发器中的行级别包含该类。

<ItemTemplate>
    <tr class="<%# QuoteClass(Eval("Owner").ToString()) %>">
    <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("Id") %>'/>
    ...
</ItemTemplate>

最后,在您的jQuery中,您可以显示和隐藏这些行类(&#39; myquote&#39;以及&#39; otherquote&#39;)。

    $('input[type=submit]#myQuotes').click(function () {
        if (!$('#myQuotes').hasClass('active'))
        {
            //filter Repeater based on Owner Column
            $('#myQuotes').toggleClass('active');
            $('#allQuotes').toggleClass('active');

            $('.otherquote').hide();
        }
    });
    $('input[type=submit]#allQuotes').click(function () {
        if (!$('#allQuotes').hasClass('active')) {
            $('#allQuotes').toggleClass('active');
            $('#myQuotes').toggleClass('active');

            $('.otherquote').show();
        }
    });