[英]Kendo UI DetailTemplate grid datasource read not fire action in controller
我正在使用層次結構網格,我綁定了父網格,但是層次結構網格在負載時未綁定,它顯示了與層次結構網格數據源讀取方法相關聯的空或控制器操作方法。 我的看法是
@(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"))
)
詳細模板如下
<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>
控制器中的動作方法如下
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只是傳遞了new { appointmentID = "#=AppointmentID#" }
但是操作方法HierarchyBinding_Appointments
參數太多-約會ID,searchKey等。
您需要使用對象路由值或JavaScript函數傳遞其他數據。
這是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.