0

后面的代码:

protected void Page_Load(object sender, EventArgs e)
{
      Page.ClientScript.RegisterClientScriptBlock(GetType(), "MyKey", "CreateNotificationTree(" + UserId + ")", true);
}

.js 文件:

function CreateNotificationTree(UserId)
{
    var data = new kendo.data.HierarchicalDataSource({
        transport: {
            read: {
                url: "../api/notifications/byuserid/" + UserId,
                contentType: "application/json"
            }
        },
        schema: {
            model: {
                children: "notifications"
            }
        }
    });

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

标记(我需要这个吗?):

<script type="text/javascript">
            $(document).ready(CreateNotificationTree(UserId));
</script>

这是行不通的。树视图未加载到页面上。

4

2 回答 2

1

在您的script块中,您没有指定CreateNotificationTree被调用$(document).ready,而是在那里调用它。正确的方法是:

<script type="text/javascript">
   $(document).ready(function () {
      CreateNotificationTree(<%= this.UserId.ToString() %>);
   });
</script>

那你就不需要RegisterClientScriptBlockPage_Load

第二个选项是不使用$(document).ready,而是调用RegisterStartupScript(当所有 DOM 元素都可用时,它在页面底部编写脚本)而不是RegisterClientScriptBlockin Page_Load

于 2013-07-31T20:41:33.237 回答
0

利用

ClientScriptManager.RegisterStartupScript
于 2013-07-31T20:15:35.933 回答