0
<ArrayOfNode xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://....Controllers">
    <Node>
         <notificationType>Test1 (20)</notificationType>
         <notifications xmlns:d3p1="http://...Serialization/Arrays">
             <d3p1:string>3298</d3p1:string>
             <d3p1:string>983932</d3p1:string>
             ... (20 items here)
    </Node>
    <Node>
         <notificationType>Test2 (40)</notificationType>
         <notifications xmlns:d3p1="http://...Serialization/Arrays">
             <d3p1:string>ABCD</d3p1:string>
             <d3p1:string>AZYX</d3p1:string>
             ...(40 items here)
    </Node>
</ArrayOfNode>

これは機能していません:

var notificationTypes = new kendo.data.HierarchicalDataSource({
                transport: {
                    read: {
                        url: "http://..."
                    }
                },
                schema: {
                    model: {
                        notificationType: "notificationType",
                        notifications: "notifications",
                        children: "notifications",
                        string: "string",
                        hasChildren: true
                    }
                }
            });

            $("#treeview").kendoTreeView({
                dataSource: notificationTypes,
                checkboxes: {
                    checkChildren: true
                },
                dataTextField: ["notificationType", "notifications"]
            });

親ノードのみをロードしますが、各ノードの「通知」をツリーの子アイテムにしたいと考えています。

次のようになります。

  • テスト1 (20)

-- 3298

-- 983932

  • テスト2 (40)

- あいうえお

-- 983932

4

1 に答える 1

1

問題を修正しました。

スクリプトコードは次のとおりです。

<script language="javascript" type="text/javascript">
            $(function()
            {
                var data = new kendo.data.HierarchicalDataSource({
                    transport: {
                        read: {
                            url: "../api/notifications/byuserid/10078261",
                            contentType: "application/json"
                        }
                    },
                    schema: {
                        model: {
                            children: "notifications"
                        }
                    }
                });

                $("#treeview").kendoTreeView({
                    dataSource: data,
                    checkboxes: {
                        checkChildren: true
                    },
                    dataTextField: ["notificationType", "NotificationDesc"]
                });
            });
        </script>

API は次のとおりです。

namespace X.Controllers
{
    public class NotificationsController : ApiController
    {
        public List<Node> getNotifications(int id)
        {
            var bo = new HomeBO();
            var list = bo.GetNotificationsForUser(id);
            var notificationTreeNodes = (from GBLNotifications n in list
                                         where n.NotificationCount != 0
                                         select new NotificationTreeNode(n)).ToList();
            var li = notificationTreeNodes.Select(no => new Node
            {
                    notificationType = no.NotificationNode.NotificationType + " " + "(" + no.NotificationNode.NotificationCount + ")", notifications = bo.GetNotificationsForUser(id, no.NotificationNode.NotificationTypeId).Cast<GBLNotifications>().Select(item => new Notification
                    {
                            ID = item.NotificationId, NotificationDesc = item.NotificationDescription
                    }).ToList()
            }).ToList();
            return li;
        }
    }

    public class Node
    {
        public List<Notification> notifications;

        public string notificationType
        {
            get;
            set;
        }
    }

    public class Notification
    {
        public int ID
        {
            get;
            set;
        }

        public string NotificationDesc
        {
            get;
            set;
        }
    }
}
于 2013-07-30T16:37:12.387 に答える