如何在两个kendo UI窗口控件之间传递数据

时间:2012-08-28 14:28:41

标签: jquery asp.net asp.net-mvc-3 kendo-ui kendo-grid

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

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

  

标题FirstName姓氏地址1 Subrub
  新南威尔士州John Karter Goyal花园先生   埃米尔沃森小姐布朗,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);
    });
}

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

感谢
Santhosh

1 个答案:

答案 0 :(得分:0)

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