Kendo UI ÊÇTelerikÍÆ³öµÄÒ»Ì×based on jQuery µÄ Framework£¬ÌṩÁËºÜ¶à¿Ø¼þ(Menu ¡¢Grid ¡¢ComboxµÈ...)£¬ µ×²ãÒÔHtml5 + jQuery À´´òÔ죬²¢ÇÒ¼æÈÝÓÚ¸÷´óä¯ÀÀÆ÷£¬°üº¬IE7¡¢IE8¡£Ïà¹Ø½éÉÜ¿ÉÒԲο¼AJAXʽÊý¾ÝÇåµ¥µÄÐÂÑ¡Ôñ-Kendo UI Grid¡£
ÒÔÏÂÄÚÈݲο¼Ì¨ÍåµÄºÚÀÏ´óµÄÎÄÕ£ºÔÚASP.NET MVC 4ÖÐʹÓÃKendo UI Grid
- ½¨Á¢Ò»¸öASP.NET MVC 4ר°¸
- ʹÓÃNuGet°²×°KendoUIWeb¼°KendoGridBinder
- ´´½¨SimMemberInfo ModelÀ࣬·Åµ½ModelĿ¼ÏÂ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;
using System.Reflection;
namespace MvcApplication2.Models
{
public class SimMemberInfo
{
public string UserNo; //»áÔ±±àºÅ
public string UserName; //»áÔ±Ãû³Æ
public DateTime RegDate; //×¢²áÈÕÆÚ
public int Points; //ÀÛ»ýµãÊý
//Ä£ÄâÊý¾ÝÔ´
public static List<SimMemberInfo> SimuDataStore = null;
static SimMemberInfo()
{
Random rnd = new Random();
//½èÓþßÃûÑÕÉ«Ãû³ÆÀ´²úÉúËæ»úÊý¾Ý
string[] colorNames = typeof(Color)
.GetProperties(BindingFlags.Static | BindingFlags.Public)
.Select(o => o.Name).ToArray();
SimuDataStore =
colorNames
.Select(cn => new SimMemberInfo()
{
UserNo = string.Format("C{0:00000}", rnd.Next(99999)),
UserName = cn,
RegDate = DateTime.Today.AddDays(-rnd.Next(1000)),
Points = rnd.Next(9999)
}).ToList();
}
}
}
- ÒªÒýÓÃKendo UI£¬ÐèÒªÔØÈë±ØÒªµÄJS¼°CSS£¬±à¼App_Start/BundleConfig.cs£¬¼ÓÈëÒÔϳÌÐò:
bundles.Add(new ScriptBundle("~/bundles/kendoUI").Include("~/Scripts/kendo/2012.1.322/kendo.web.min.js"));
//¾Êµ²â£¬SytleBundle virtualPath²ÎÊýʹÓÃ"2012.1.322"»áÓÐÎÊÌ⣬¹ÊÏòÉϰáÒÆÒ»²ã
//½«/Content/kendo/2012.1.322µÄÄÚÈݰáÖÁContent/kendoÏÂ
bundles.Add(new StyleBundle("~/Content/kendo/css").Include("~/Content/kendo/kendo.common.min.css",
"~/Content/kendo/kendo.blueopal.min.css"
));
ÓÉÓÚCSSÎļþ·¾¶»á±»µ±³ÉͼƬÎļþµÄ»ù×¼£¬Ô±¾Kendo UIµÄ.css¼°Í¼Í¼Æ¬±»·ÅÔÚ~/Content/kendo/2012.1.322/Ï£¬ÀíÂÛÉÏStyleBundleÓ¦Éè³É"~/Content/kendo/2012.1.322/css¡±£¬²ÅÄÜÒýµ¼ä¯ÀÀÆ÷µ½¸ÃĿ¼ÏÂÈ¡ÓÃͼÎļþ¡£²»Ðҵأ¬ÎÒ·¢ÏÖStyleBundleµÄvirtualPath²ÎÊý³öÏÖ2012.1.322ʱ£¬»áµ¼ÖÂStyles.Render("~/Content/kendo/2012.1.322/css¡±)ʱ´«»ØHTTP 404´íÎó~ Ϊ¿Ë·þÎÊÌ⣬ÎÒ¾ö¶¨½«2012.1.322Ŀ¼µÄÄÚÈÝÏòÉϰáÒ»²ã£¬Ö±½Ó·ÅÔÚ~/Content/kenoĿ¼Ï£¬²¢½«virtualPathÉè³É"~/Content/kendo/css"£¬ÕâÑù¾ÍÄܱܿªÎÊÌâ¡£
ÔÚ~/Views/Shared/_Layout.cshtmlÖÐ:
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/themes/base/css", "~/Content/css", "~/Content/kendo/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery", "~/bundles/kendoUI")
@RenderSection("scripts", required: false)
</body>
</html>
- ÔÚIndex.cshtmlµÄ´úÂëÈçÏ£º
@section Scripts
{
<style>
body { font-size: 9pt; }
#dvGrid { width: 500px; }
span.hi-lite { color: red; }
#dvGrid th.k-header { text-align: center; }
</style>
<script>
$(function () {
//½¨Á¢Êý¾ÝÔ´¶ÔÏó
var dataSrc = new kendo.data.DataSource({
transport: {
read: {
//ÒÔÏÂÆäʵ¾ÍÊÇ$.ajaxµÄ²ÎÊý
type: "POST",
url: "/Home/Grid",
dataType: "json",
data: {
//¶îÍâ´«ÖÁºó·½µÄ²ÎÊý
keywd: function () {
return $("#tKeyword").val();
}
}
}
},
schema: {
//È¡³öÊý¾ÝÊý×é
data: function (d) { return d.data; },
//È¡³öÊý¾Ý×ܱÊÊý(¼ÆËãÒ³ÊýÓÃ)
total: function (d) { return d.total; }
},
pageSize: 10,
serverPaging: true,
serverSorting: true
});
//JSONÈÕÆÚת»»
var dateRegExp = /^\/Date\((.*?)\)\/$/;
window.toDate = function (value) {
var date = dateRegExp.exec(value);
return new Date(parseInt(date[1]));
}
$("#dvGrid").kendoGrid({
dataSource: dataSrc,
columns: [
{ field: "UserNo", title: "»áÔ±±àºÅ" },
{ field: "UserName", title: "»áÔ±Ãû³Æ",
template: '#= "<span class=\\"u-name\\">" + UserName + "</span>" #'
},
{ field: "RegDate", title: "¼ÓÈëÈÕÆÚ",
template: '#= kendo.toString(toDate(RegDate), "yyyy/MM/dd")#'
},
{ field: "Points", title: "ÀÛ»ýµãÊý" },
],
sortable: true,
pageable: true,
dataBound: function () {
//AJAXÊý¾ÝBindÍê³Éºó´¥·¢
var kw = $("#tKeyword").val();
//ÈôÓÐÉè¹Ø¼ü´Ê£¬×öHighlight´¦Àí
if (kw.length > 0) {
var re = new RegExp(kw, "g");
$(".u-name").each(function () {
var $td = $(this);
$td.html($td.text()
.replace(re, "<span class='hi-lite'>$&</span>"));
});
}
}
});
//°´Ï²éѯť
$("#bQuery").click(function () {
//ÒªÇóÊý¾ÝÔ´ÖØÐ¶ÁÈ¡(²¢Ö¸¶¨ÇÐÖÁµÚÒ»Ò³)
dataSrc.read({ page: 1, skip: 0 });
//GridÖØÐÂÏÔʾÊý¾Ý
$("#dvGrid").data("kendoGrid").refresh();
});
});
</script>
}
<div style="padding: 10px;">
¹Ø¼ü´Ê:
<input id="tKeyword" /><input type="button" value="²éѯ" id="bQuery" />
</div>
<div id="dvGrid">
</div>
- HomeController.csµÄGrid() Action £º
public JsonResult Grid(KendoGridRequest request, string keywd)
{
var result = SimMemberInfo.SimuDataStore.Where(o => o.UserName.Contains(keywd));
return Json(new KendoGrid<SimMemberInfo>(request, result));
}
Ö»Òªreturn Json(new KendoGrid<T>(KendoGridRequest, IEnumerable<T>))£¬ÓàÏµĻ»Ò³¡¢ÅÅÐò£¬ÉõÖÁ×ֶιýÂ˹¦ÄÜ£¬¾Í¶¼½»¸øKendoGridBinderȫȨ´¦À톪!