[英]Kendo UI DetailTemplate grid datasource read not fire action in controller
I'm using hierarchical grid, I bind parent grid but the hierarchical grid is not binding on load, it's shows empty nor controller action method fire associated against hierarchical grid datasource read method. 我正在使用层次结构网格,我绑定了父网格,但是层次结构网格在负载时未绑定,它显示了与层次结构网格数据源读取方法相关联的空或控制器操作方法。 My view is as
我的看法是
@(Html.Kendo().Grid<Cubes.UI.Models.PatientAppointmentInfoModel>()
.Name("PatientAppointmentGrid")
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(Cubes.Common.Constants.GridPageSize)
.Read(read => read.Action("_SearchPatientAppointment", "PatientAppointment"))
)
.Columns(columns =>
{
columns.Bound(m => m.AppointmentID).Title("Appointment #");
columns.Bound(m => m.StartTime).Title("Start Time").Width(100);
columns.Bound(m => m.EndTime).Title("End Time");
columns.Bound(m => m.AppointmentDate).Format("{0:d}").Title("Appointment Date");
columns.Bound(m => m.FirstName).Title("First Name");
columns.Bound(m => m.LastName).Title("Last Name");
columns.Bound(m => m.Amount).Title("Amount");
})
.Selectable(selectable => selectable.Mode(GridSelectionMode.Single))
.Pageable()
.Sortable()
.Scrollable()
.ClientDetailTemplateId("template")
.Resizable(resize => resize.Columns(true))
.Events(events =>
events.DataBound("OnDataBoundPatientAppointmentGrid"))
)
and detail template is as below 详细模板如下
<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().Grid<Cubes.UI.Models.PatientAppointmentInfoModel>()
.Name("Grid_#=AppointmentID#")
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(Cubes.Common.Constants.GridPageSize)
.Read(read => read.Action("HierarchyBinding_Appointments", "PatientAppointment", new { appointmentID = "#=AppointmentID#" }))
)
.Columns(columns =>
{
columns.Bound(t => t.AppointmentID).Title("Appoitnet_#=AppointmentID#");
columns.Bound(t => t.StartTime).Width(100);
columns.Bound(t => t.EndTime);
columns.Bound(t => t.AppointmentDate).Format("{0:d}").Title("Appointment Date");
columns.Bound(t => t.FirstName);
columns.Bound(t => t.LastName);
columns.Bound(t => t.Amount);
})
.Selectable(selectable => selectable.Mode(GridSelectionMode.Single))
.Pageable()
.Sortable()
.Resizable(resize => resize.Columns(true))
.ToClientTemplate()
)
</script>
action method in controller is as below 控制器中的动作方法如下
public ActionResult HierarchyBinding_Appointments( [DataSourceRequest]DataSourceRequest request,string appointmentID, string searchKey, string columnNameToSort, string defaultSortOrder, string Mobile, PatientAppointmentInfoModel model)
{
//model.Mobile = Mobile;
var filter = BuildSearchDescriptor(model);
if (filter != null)
{
IList<IFilterDescriptor> filters = new List<IFilterDescriptor>();
filters.Add(filter);
request.Filters = filters;
}
var roles = GetPatientAppointmentsForChild(Convert.ToInt32(appointmentID),request);
var result = new DataSourceResult
{
Data = roles.Results,
Total = roles.RowCount
};
return Json(result, JsonRequestBehavior.AllowGet);
}
Detail Grid just passes new { appointmentID = "#=AppointmentID#" }
but action method HierarchyBinding_Appointments
has too many parameters - appointmentID, searchKey and so on. Detail Grid只是传递了
new { appointmentID = "#=AppointmentID#" }
但是操作方法HierarchyBinding_Appointments
参数太多-约会ID,searchKey等。
You need to pass additional data either using object routes values or JavaScript function. 您需要使用对象路由值或JavaScript函数传递其他数据。
Here is the example for JavaScript function. 这是JavaScript函数的示例。
.Read(read => read
.Action("HierarchyBinding_Appointments", "PatientAppointment")
.Data("patientAppointmentData(#=AppointmentID#"))
<script type="text/javascript">
function patientAppointmentData(AppointmentID) {
return {
appointmentID: AppointmentID,
searchKey: xxx,
columnNameToSort: xxx,
defaultSortOrder: xxx,
Mobile: xxx
};
}
</script>
public ActionResult HierarchyBinding_Appointments(
[DataSourceRequest]DataSourceRequest request,
MyModel model)
{
}
public class MyModel
{
public xxx AppointmentID { get; set; }
public xxx SearchKey { get; set; }
public xxx ColumnNameToSort { get; set; }
public xxx DefaultSortOrder { get; set; }
public xxx Mobile { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.