8

我是 kendo.Ui 的初学者,我为创建网格编写此代码

@(Html.Kendo().Grid<BrandViewModel>(Model)
    .Name("Grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.BrandName);
        columns.Bound(p => p.BrandAbbr);
        columns.Bound(p => p.SrcImage);

        columns.Command(command => command.Custom("Edit").Click("editItem"));

    })

    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("CustomCommand_Read", "Brand"))
         .Model(model => model.Id(p => p.Id))

               )
)

我想当用户单击在剑道窗口中Edit打开的按钮时Edit view我编写此代码

@(Html.Kendo().Window().Name("Details")
    .Title("Customer Details")
    .Visible(false)
    .Modal(true)
    .Draggable(true)

    .Width(300)
)



<script type="text/x-kendo-template" id="template">
    <div id="details-container"> <!-- this will be the content of the popup -->
        BrandName: <input type='text' value='#= BrandName #' />

    </div>
</script>

和java脚本代码:

<script type="text/javascript">
    var detailsTemplate = kendo.template($("#template").html());

    function editItem(e) {
        e.preventDefault();

        var dataItem = this.dataItem($(e.currentTarget).closest("tr"));

        $("#Details").data("kendoWindow").refresh({
            url: "/Brand/Edit/" + dataItem.Id
        });
        $("#Details").data("kendoWindow").open();



    }
</script>

此代码工作正常我第一次单击一个按钮,但是当我第二次单击时。我遇到了以下错误

0x800a138f - JavaScript runtime error: Unable to get property 'refresh' of undefined or null reference

请帮助我,谢谢大家

4

2 回答 2

4

我记得我对这个控件有类似的问题。现在它适用于我的以下 Javascript 代码:

<script type="text/javascript">
    var detailsTemplate = kendo.template($("#template").html());
    var windowObject;

    $(document).ready(function () {
        windowObject = $("#Details").data("kendoWindow");
    });

    function editItem(e) {
        e.preventDefault();

        var dataItem = this.dataItem($(e.currentTarget).closest("tr"));

        windowObject.refresh({
            url: "/Brand/Edit/" + dataItem.Id
        });
        windowObject.open();
    }
</script>

希望能帮助到你 !

于 2013-08-09T14:30:23.757 回答
1

问题是,默认情况下,窗口将在关闭时被销毁(从 DOM 中删除)。我建议删除我在下面的示例中添加的“未定义”条件,而不是首先创建“详细信息”div。

<script type="text/javascript">
    var detailsTemplate = kendo.template($("#template").html());

    function editItem(e) {
        e.preventDefault();

        var dataItem = this.dataItem($(e.currentTarget).closest("tr"));

        if($("#Details") == undefined)
            $("body").append("<div id=\"Details\"></div>

        $("#Details").data("kendoWindow").refresh({
            url: "/Brand/Edit/" + dataItem.Id
        });
        $("#Details").data("kendoWindow").open();



    }
</script>
于 2013-08-09T15:40:13.820 回答