1

我有两个剑道 UI 窗口控件。获取客户详细信息的第一个(父)窗口以及搜索按钮。第二个(子)窗口使用客户名字、姓氏等搜索客户。

搜索结果会显示在子窗口的网格控件中,比如

标题 名字 姓氏 地址1 Subrub
John Karter 先生 Goyal garden, NSW
Miss Emile Watson Garden brown, VC

如果我在网格中选择任何客户,我需要在第一个(父)窗口的相应控件中填充客户详细信息。所以我在更改事件上调用 js 函数,如下所示

@(Html.Kendo().Grid((IEnumerable<OnlineABThemes.Data.GetCustomers_Result>)ViewData["CustomerSearchGrid"])
    .Name("ChildWindowCustomerGrid")
    .Columns(columns => {
        columns.Bound(p => p.ID).Visible(false);
        columns.Bound(p => p.Title).Width(60);
        columns.Bound(p => p.FirstName).Width(130);
        columns.Bound(p => p.LastName).Width(100);
        columns.Bound(p => p.Address1).Width(150);
        columns.Bound(p => p.Suburb).Width(80);
        columns.Bound(p => p.State).Width(80);
        columns.Bound(p => p.PostCode).Width(120);
        columns.Bound(p => p.Phone).Width(100);
        columns.Bound(p => p.Mobile).Width(100);
        columns.Bound(p => p.Email).Width(120);
    })
    .Sortable()
    .Scrollable()
    .Filterable()
    .DataSource(ds => ds.Server()
    .Model(model => model.Id(p=>p.ID))
)
.Selectable(s=>s.Mode(GridSelectionMode.Single))
.Events(events => events.Change("CustomerChanged"))
)

这是我的js函数

function CustomerChanged() {
    var grid = $('#ChildWindowCustomerGrid').data('kendoGrid');
    var customerID = grid.select("ID");

    $.ajax({<br>
        url: "/Customer/GetCustomer",
        type: "POST",
        data: { customerId: customerID }
    })

    $("#childWindow").data("kendoWindow").close();
    .fail(function (r, o) {
        alert("Failed : " + r.responseText);
    });
}

我无法获取客户 ID 以及如何填写第一个(父)窗口中的客户详细信息。即,如何通过将 customerID 从一个窗口传递到另一个窗口来填写客户详细信息。

谢谢桑托什
_

4

1 回答 1

0

我不能说我完全遵循您的代码,但这可能会有所帮助。Kendo 窗口控件以两种模式运行:1) 通过在 iframe 中加载另一个 URL,以及 2) 通过在看起来像窗口的 div 中加载内容。如果您正在使用第一个场景,您可以通过调用window.opener,window.parentwindow.top(取决于您要执行的操作)传回客户 ID,并以这种方式获取对父窗口的引用。如果您在第二种情况下工作,则可以使用某种视图模型来存储可在所有窗口中访问的当前选择。也许这会激发一些想法,但是如果您发布更多代码,我可能会更具体地了解解决方案。

于 2012-10-13T03:24:39.317 回答