我有一些(動態分配數量)的Kendo網格在Razor PartialView中運行。網格旨在通過MVC控制器的AJAX請求數據。控制器接收到讀取請求,請求狀態良好,控制器通過JSON將數據傳回(通過Fiddler驗證)。 不幸的是,網格從不顯示數據。我對此感到陌生,對於從哪裏開始感到不知所措。據我所知,代碼與此場景中的Kendo示例相匹配。這不是數據或模型問題,因爲它們都在應用程序的其他部分使用而沒有問題。MVC控制器傳遞JSON數據,但Kendo網格不顯示它
控制器:
public class MemberController : Controller
{
private MemberContext db = new MemberContext();
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Grid_Member_Read([DataSourceRequest] DataSourceRequest request,
int club_id)
{
var results = from r in db.Members where r.MemberClub.Id == club_id select r;
return Json(results.ToDataSourceResult(request));
}
}
的PartialView:
@(Html.Kendo().Grid<RegistrationManagement.Models.Member>()
.Name("MembersGrid")
.Columns(columns =>
{
columns.Bound(p => p.LastName);
columns.Bound(p => p.FirstName);
columns.ForeignKey(p => p.MemberStatusID, (System.Collections.IEnumerable)ViewData["status"], "Value", "Text");
columns.Bound(p => p.RegistrationYear);
columns.Bound(p => p.StreetAddress1);
columns.Bound(p => p.StreetAddress2);
columns.Bound(p => p.State);
columns.Bound(p => p.ZipCode);
columns.Bound(p => p.Email);
columns.Bound(p => p.PhoneNumber);
columns.Command(command => { command.Custom("Edit2").Click("CustomEdit"); command.Edit(); command.Destroy(); }).Width(160);
})
.ToolBar(toolbar => toolbar.Create())
.Editable()
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.MemberStatus).Editable(false);
})
.Read(read => read
.Action("Grid_Member_Read", "Member", new { club_id = @ViewBag.ClubID })
)
.Create(create => create.Action("Grid_Member_Create", "Member", new { ClubID = @ViewBag.ClubID }))
.Update(update => update.Action("Grid_Member_Update", "Member"))
.Destroy(destroy => destroy.Action("Grid_Member_Destroy", "Member"))
)
)
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function() {
message += this + "\n";
});
}
});
alert(message);
}
}
function CustomEdit(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
}
的提琴手數據:
控制器的響應網格線1的讀出請求:
{"Data":[{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus": {"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"[email protected]","URL":"www.w.w."},"MemberStatus":{"Id":2,"Name":"Active"},"Id":1,"MemberClubID":1,"MemberStatusID":2,"MembershipNumberRoot":1,"LastName":"last","FirstName":"Edited","StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":"11111","PhoneNumber":"555-1212","Email":"[email protected]","RegistrationYear":2000},{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"[email protected]","URL":"www.w.w."},"MemberStatus":{"Id":10,"Name":"New"},"Id":10,"MemberClubID":1,"MemberStatusID":10,"MembershipNumberRoot":null,"LastName":"1","FirstName":"1","StreetAddress1":"1","StreetAddress2":"1","City":null,"State":"1","ZipCode":"1","PhoneNumber":"1","Email":"1","RegistrationYear":1},{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"[email protected]","URL":"www.w.w."},"MemberStatus":{"Id":10,"Name":"New"},"Id":11,"MemberClubID":1,"MemberStatusID":10,"MembershipNumberRoot":null,"LastName":"2","FirstName":"2","StreetAddress1":"2","StreetAddress2":"2","City":null,"State":"2","ZipCode":"2","PhoneNumber":"2","Email":"2","RegistrationYear":2}],"Total":3,"AggregateResults":null,"Errors":null}
控制器的網格2的響應讀取請求:
{"Data":[{"MemberClub":{"RelationshipManager":{},"Id":2,"ClubName":"Test Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"[email protected]","URL":"www.w.w.","ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"}},"MemberStatus":{"Id":10,"Name":"New"},"Id":13,"MemberClubID":2,"MemberStatusID":10,"MembershipNumberRoot":2,"LastName":"Dude","FirstName":"Random","StreetAddress1":"street","StreetAddress2":"a","City":"City","State":"State","ZipCode":"11111","PhoneNumber":"555-1212","Email":"[email protected]","RegistrationYear":2012}],"Total":1,"AggregateResults":null,"Errors":null}
響應網格3:
{ 「數據」:[ ],「Total」:0,「AggregateResults」:null,「Errors」:null}
(這是正確的)
在我開始顯示多個網格之前,我有一個網格,它使用從控制器傳遞的模型來包含數據。這工作完美。然後我添加了動態網格創建(三個網格都使用了傳遞的模型),並且它們都顯示了最後一次請求的模型數據,所以我開始使用AJAX方法。
這個問題不是很愚蠢;以前曾經問過非常類似的問題,但這些問題都沒有爲控制器的讀取功能(正確填充)傳遞額外的值,並且據我所知,我已經實施了在這些問題中推薦的更改以及Kendo網站沒有成功。
這必須是一些基本的基礎。有任何想法嗎?
謝謝!
你能檢查一下你的網格沒有重名嗎?這可能是這種行爲的原因。 (注意:您似乎沒有將讀取的類型指定爲POST) –