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