我正在尝试在选项卡式布局中呈现搜索结果页面(将类别作为选项卡)。如何确保标签顺序为产品,文章和视频?现在它总是按字母顺序打印(因为我认为有秩序的方法)。我是创建自定义排序/比较的新手。谢谢!
protected void ResultsRedendering(List<Item> searchResult)
{
_searchResults = searchResult.GroupBy(i => i.TemplateName).OrderBy(p=>p.Key).ToList();
_searchResults.RemoveAll(i => i.Key != "Product" && i.Key != "Article" && i.Key != "Video");
rptResultTab.DataSource = _searchResults;
rptResultTab.DataBind();
}
这是我的项目模板呈现每个标签的方式......
<ItemTemplate>
<li><a href="#<%#((IGrouping<string , Item>)Container.DataItem).Key %>">
<%#((IGrouping<string, Item>)Container.DataItem).Key)%></a></li>
</ItemTemplate>
此外,_searchResult的类型为List<IGrouping<string,Item>>
答案 0 :(得分:1)
虽然可能不是100%最佳,但这应该有效。
protected void ResultsRedendering(List<Item> searchResult)
{
var _searchResults = searchResult
.OrderBy(o => o.Key == "Product" ? 1 : o.Key== "Article" ? 2 : 3});
var rptResultTab.DataSource = _searchResults;
rptResultTab.DataBind();
}
答案 1 :(得分:1)
您可以制作单独的类别列表,以便更轻松地使用它们:
var products = searchResult.Where(sr => sr.Key == "Product");
var articles = searchResult.Where(sr => sr.Key == "Article");
var videos = searchResult.Where(sr => sr.Key == "Video");
我不清楚你如何准确地设置DataBinding,所以这就是我现在真正推荐的。如果您添加更多信息,我可以进一步提供帮助。