سؤال

أحاول التوصل إلى أفضل طريقة لتقديم بعض البيانات الهرمية إلى قائمة متداخلة غير مرتبة باستخدام ASP.NET MVC.هل لدى أي شخص أي نصائح حول كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

أقترح مكونات إضافية لعرض شجرة jquery لجعلها تعمل مثل الشجرة، ولكن بالنسبة للتصيير، ما عليك سوى وضعها في مساعد lambda العودي للقيام بالتداخل.

نصائح أخرى

أنت تعني...تريد نوعا من منظر الشجرة؟

يمكنك بالفعل تشغيل التحكم في Treeview ...ولكن عليك أن تقوم بتغليفها في علامة النموذج من جانب الخادم حتى تعمل.سوف تحصل على الأشياء السيئة المعتادة التي يجلبها ذلك (مثل المعرفات التي تم إنشاؤها وحالة العرض) ولكنها ستعمل من منظور العرض.

إذا كنت تريد فقط إنشاء العلامات ودمجها، فسيكون من السهل جدًا القيام بذلك باستخدام حلقات foreach().

أعتقد أنه لا يوجد حاليا مثل هذه السيطرة....TreeViews معقدة بطبيعتها.يمكنك بالطبع "رسم" التسلسل الهرمي بقدر ما تريد باستخدام جميع أنواع الراسبين والحلقات، ولكن لتحقيقه وظائف طريقة عرض شجرة مثل تلك الموجودة في مربع أدوات نماذج الويب...عليك الانتظار !

لماذا لا تمرر نموذجك على شكل شجرة إلى المنظر؟

/// This is the model class
public class MyTreeNode<T>
{
    public ICollection<MyTreeNode> ChildNodes {get;}
    public T MyValue { get; set; }
    bool HasChildren { get { return ChildNodes.Any(); } }
}

///This is the html helper:
public static string RenderTree<T>(this HtmlHelper html, MyTreeNode<T> root, Func<T, string> renderNode)
{
    var sb = new StringBuilder();
    sb.Append(renderNode(root.MyValue));
    if (root.HasChildren)
    {
        foreach(var child in root.ChildNodes)
        {
            sb.Append(RenderTree<T>(html, child, renderNode));
        }
    }
    return sb.ToString();
}

لم أختبر هذا الكود فعليًا، لكن الأمر يتعلق بالفكرة.يمكنك أن تتخيل إنشاء مساعد HTML العودي الخاص بك لتقديم شجرة.

لذلك (عرض القائمة الهرمية، وعرض الشجرة، وما إلى ذلك) أستخدم الاستدعاءات المتكررة للمكون المخصص (ascx، أو aspx في Preview5 الجديد).
أعطي المكون المستوى الأول من العناصر (قائمة العناصر)، ثم المكون ثم تحقق من كل عنصر في القائمة إذا كان هناك أي عناصر فرعية واستدعاء نفسه بقائمة تلك العناصر الفرعية.
يمكنك إنشاء رسم بياني هرمي للكائنات في وحدة التحكم، أو قائمة ذات أبعاد واحدة فقط باستخدام خاصية ParentID.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top