【发布时间】:2015-01-20 17:42:35
【问题描述】:
我有这个以编程方式填充的列表。
<ul id="topNavigation" class="topNavigation" runat="server"></ul>
这是列表项的代码
foreach (var node in children)
{
HtmlGenericControl li = new HtmlGenericControl("li");
HtmlGenericControl span = new HtmlGenericControl("span");
span.Attributes.Add("class", "editableLinks");
span.Attributes.Add("data-id", node.id.ToString());
var child = new Node(node.id);
if (child.Name.Contains("contact"))
break;
var sortOrder = child.GetProperty("sortOrder");
if (sortOrder != null)
span.Attributes.Add("data-sort", sortOrder.Value);
var hidden = "";
var deleted = "0";
var naviHide = child.GetProperty("umbracoNaviHide");
var userDeleted = child.GetProperty("userDeleted");
if (naviHide != null)
{
hidden = naviHide.Value;
if (userDeleted != null)
deleted = userDeleted.Value;
// nav.InnerText += naviHide.Value;
if (hidden != "1" && deleted !="1")
{
topNavigation.Controls.Add(li);
var anchor = new HyperLink();
var title= child.GetProperty("title");
//anchor.Text=child.Id.ToString();
if (!string.IsNullOrWhiteSpace(title.Value))
span.InnerHtml = title.Value;
else
{
var name = child.Name.Split('_');
span.InnerHtml = name[1];
}
if (child.Id == Node.GetCurrent().Id)
li.Attributes.Add("class", "current");
anchor.CssClass = "navigation";
if (!host.Contains("testcms"))
{
if (!string.IsNullOrWhiteSpace(child.GetProperty("umbracoUrlAlias").Value))
anchor.NavigateUrl = "/"+child.GetProperty("umbracoUrlAlias").Value;
else
anchor.NavigateUrl = child.NiceUrl;
}
else
{
var id = "/" + child.Id.ToString();
anchor.NavigateUrl = id;
//anchor.NavigateUrl=anchor.NavigateUrl.Replace("usercontrols", "");
}
anchor.Controls.Add(span);
li.Controls.Add(anchor);
}
}
有没有办法通过这个函数中提取的 sortOrder 值对列表项进行排序?目前我正在通过 javascript 对其进行重新排序,但在某些使用它的地方无法使用 javascript。
【问题讨论】:
-
每个孩子的排序顺序是否相同?或者换一种方式,如果不同孩子的排序顺序不同会发生什么。
-
不,他们没有。但要获得排序顺序,我必须通过 getproperty 函数进入子节点。我在列表项内的每个锚标记中设置跨度中每个排序顺序的值。
-
如果您有不同的排序顺序,那么我不清楚您希望列表如何排序。您能否举一个数据示例、可能的排序顺序以及您希望列表如何结束?还是排序顺序是一个值,指示项目在哪个位置?
-
我遇到的问题是如何通过子节点中的属性对前端的列表进行重新排序。在它通过并将它们添加到列表之后,排序顺序值位于每个列表项的范围内。我只是不确定如何在创建后重新排序列表。
-
排序顺序是我希望项目所在的位置,但目前无法按这些值对列表进行排序