2017-05-25 70 views
8

我有一個空的div,我想初始化成使用來自Model..Data的數據的劍道網格應該是類似於以下內容,但我無法加載數據如何使用數據從模型綁定爲劍道數據源

$("#mapsDiv").kendoGrid({ 
    sortable: true, 
    dataSource: { 
        transport: { 
            read:"/Home/About", 
            dataType: "odata" 
           }, 
        pageSize: 5 
       }, 
    pageable: true, 
    resizable: true, 
    columnMenu: true, 
    scrollable:true, 
    navigatable: true, 
    editable: "incell" 
}); 

About.cshtml

@model List<KendoExample.Entities.ShortStudent> 

<div class="row"> 
<div class="col-md-12 table-responsive" id="mapsDiv">   
</div> 

家庭控制器如下

List<ShortStudent> students = new List<ShortStudent>(); 

ShortStudent student1 = new ShortStudent(); 
student1.birthdate = new DateTime(1999, 4, 30); 
student1.classname = "1B"; 
student1.firstname = "Fredie"; 
student1.surname = "Fletcher"; 
student1.studentid = 1; 

ShortStudent student2 = new ShortStudent(); 
student2.birthdate = new DateTime(2010, 5, 4); 
student2.classname = "1B"; 
student2.firstname = "Lee"; 
student2.surname = "Hobbs"; 
student2.studentid = 2; 

students.Add(student1); 
students.Add(student2); 

return View(students); 

我已經看到了使用JSON的例子,但沒有OData的...

另外,還有一些例子來使用它像

@(Html.Kendo().Scheduler<MeetingViewModel>() 
.Name("scheduler") 
.Editable(false) 
.DataSource(ds => ds 
    .Custom() 
    .Batch(true) 
    .Schema(schema => schema 
     .Model(m => 
     { 
      m.Id(f => f.MeetingID); 
      m.Field("title", typeof(string)).DefaultValue("No title").From("Title"); 
      m.Field("start", typeof(DateTime)).From("Start"); 
      m.Field("end", typeof(DateTime)).From("End"); 
      m.Field("description", typeof(string)).From("Description"); 
      m.Field("recurrenceID", typeof(int)).From("RecurrenceID"); 
      m.Field("recurrenceRule", typeof(string)).From("RecurrenceRule"); 
      m.Field("recurrenceException", typeof(string)).From("RecurrenceException"); 
      m.Field("isAllDay", typeof(bool)).From("IsAllDay"); 
      m.Field("startTimezone", typeof(string)).From("StartTimezone"); 
      m.Field("endTimezone", typeof(string)).From("EndTimezone"); 
     })) 
    .Transport(new { 
     //the ClientHandlerDescriptor is a special type that allows code rendering as-is (not as a string) 
     read = new Kendo.Mvc.ClientHandlerDescriptor() {HandlerName = "customRead" } 
    }) 
) 
) 

對此我無法理解/實施,所以請忽略這種一個辦法。

目前我看到一個網格頁腳,表示(我的屏幕上沒有任何頁眉或內容(數據行))(4852項中的1 - 2)。我究竟做錯了什麼?

UPDATE

var dataSource = new kendo.data.DataSource(
     { 
      transport: { 
       read: { 
        url: '@Url.Action("About", "Home")', 
        contentType: "application/json", 
        dataType: "json" 
       } 
      }, 
      schema: { 
       model: { 
        fields: { 
         firstname: { type: "string" }, 
         surname: { type: "string" }, 
         birthdate: { type: "date" }, 
         classname: { type: "string" } 
        } 
       } 
      }, 
      type: "json", 
      serverPaging: false, 
      serverFiltering: true, 
      serverSorting: false 
     } 
    ); 

$("#mapsDiv") 
     .kendoGrid(
    { 

     sortable: true, 
     dataSource: { 

      transport: { 
       read: dataSource 
      }, 
      pageSize: 2 
     }, 
     pageable: true, 
     resizable: false, 
     columnMenu: true, 
     scrollable:true, 
     navigatable: true, 
     editable: "incell", 
     columns:[{ 
      field: "firstname", 
     },{ 
      field: "surname", 
     },{ 
      field: "classname", 
     },{ 
      field: "age", 
     }] 
    }); 

的HomeController

public ActionResult About() 
    { 
    .... 
    return View(students); 
} 

現在用頭中的網格是有,但不存在數據.. 如果更改動作JSON,它返回普通JSON

public ActionResult About() 
    { 
    .... 
    return Json(students, JsonRequestBehavior.AllowGet); 
} 
+0

首先,你還沒有添加任何字段網格。 – Kris

+0

我現在已經添加了列建議,但現在只有標題是可用的數據仍然不存在,可能它讀取別的東西作爲數據,因爲頁面頁腳顯示總共5014項 – Samra

回答

-1

因此,這裏是我發現什麼應該是簡單的:)

var values = @Html.Raw(Json.Encode(@Model)); 

$("#MapDetails") 
     .kendoGrid(
    { 
     sortable: true, 
     dataSource: { 
      data:values, 
      pageSize: 2 
     }, 
     pageable: true, 
     resizable: false, 
     columnMenu: true, 
     scrollable:true, 
     navigatable: true, 
     editable: "incell", 
     columns:[{ 
      field: "firstname", 
     },{ 
      field: "surname", 
     },{ 
      field: "classname", 
     },{ 
      field 
     : "age", 
     }] 

    }); 
+0

嘆氣,這正是我說你應該做的。 – Kris

1

我剛訪問telerik演示。嘗試下面。希望能幫助我的朋友。或者你可以訪問這個鏈接來參考更多:http://demos.telerik.com/kendo-ui/grid/remote-data-binding

$("#mapsDiv") 
     .kendoGrid(
    { 

     sortable: true, 
     dataSource: { 
      transport: { 
       read:"/Home/About", 
       dataType: "odata" 
      }, 
      pageSize: 5 
     }, 
     schema: { 
       model: { 
         fields: { 
          studentid: { type: "number" }, 
          birthdate : { type: "date" }, 
          classname : { type: "string" }, 
          firstname : { type: "date" }, 
          surname : { type: "string" } 
            } 
           } 
          }, 
     pageable: true, 
     resizable: true, 
     columnMenu: true, 
     scrollable:true, 
     navigatable: true, 
     editable: "incell" 

    }); 
+0

我改變了我的控制器返回json(學生),現在它顯示我在頁面上清除json而不是任何UI /網格 – Samra

+0

@Samra:您需要將dataType:「odata」更改爲「json」。訪問這個鏈接更多的參考,我的朋友:http://docs.telerik.com/kendo-ui/framework/datasource/overview – Tomato32

+0

嗨番茄我確實從odata更改爲JSON,你可以在原來的帖子中看到我的更新..我仍然卡住..感謝任何幫助謝謝 – Samra

5

您是否嘗試過將字段添加到網格?

$("#mapsDiv") 
    .kendoGrid(
{ 

    sortable: true, 
    dataSource: { 
     transport: { 
      read:"/Home/About", 
      dataType: "odata" 
     }, 
     pageSize: 5 
    }, 
        columns: [ 
         { 
          field: "classname", 
          title: "Class Name" 
         }, 
         { 
          field: "firstname", 
          title: "First name" 
         }, 
         { 
          field: "surname", 
          title: "Last name" 
         } 
        ], 
    pageable: true, 
    resizable: true, 
    columnMenu: true, 
    scrollable:true, 
    navigatable: true, 
    editable: "incell" 

});