Umbraco: перечислите дочерние узлы в пользовательском элементе управления

Взятие листа от Scott Meyers, Более эффективный C++ Объект 6: Различайте префикс и снабдите постфиксом формы инкрементных и декрементных операций .

версия префикса всегда предпочитается по постфиксу в отношении объектов, особенно в отношении итераторов.

причина этого, если Вы смотрите на шаблон вызова операторов.

// Prefix
Integer& Integer::operator++()
{
    *this += 1;
    return *this;
}

// Postfix
const Integer Integer::operator++(int)
{
    Integer oldValue = *this;
    ++(*this);
    return oldValue;
}

Рассмотрение этого примера легко видеть, как префиксный оператор всегда будет более эффективным, чем постфикс. Из-за потребности во временном объекте в использовании постфикса.

Поэтому, когда Вы видите, что примеры используют итераторы, они всегда используют версию префикса.

, Но как Вы указываете для интервала, нет эффективно никакого различия из-за оптимизации компилятора, которая может произойти.

14
задан JGrimm 7 July 2009 в 20:15
поделиться

1 ответ

Получить дочерние узлы довольно просто.

Не уверен, насколько далеко вы продвинулись со своим кодом, поэтому вот полный пример с различными параметрами:

using umbraco.presentation.nodeFactory;

namespace cogworks.usercontrols
{
    public partial class ExampleUserControl : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //If you just want the children of the current node use the following method
            var currentNode = Node.GetCurrent();

            //If you need a specific node based on ID use this method (where 123 = the desired node id)
            var specificNode = new Node(123);

            //To get the children as a Nodes collection use this method
            var childNodes = specificNode.Children;

            //Iterating over nodes collection example
            foreach(var node in childNodes)
            {
                Response.Write(string.Format("{0}<br />", node.Name));
            }

            //To get the nodes as a datatable so you can use it for DataBinding use this method
            var childNodesAsDataTable = node.ChildrenAsTable();

            //Databind example
            GridViewOnPage.DataSource = childNodesAsDataTable;
            GridViewOnPage.DataBind();
        }
    }
}
17
ответ дан 1 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: