我有一个表(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>
答案 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();
}
});