发布时间:2019-12-09
Kendo UI目前最新提供Kendo UI for jQuery、Kendo UI for Angular、Kendo UI Support for React和Kendo UI Support for Vue四个控件。Kendo UI for jQuery是创建现代Web应用程序的最完整UI库。
Kendo UI Grid提供模板引擎和内置的DataSource,可让您快速设置和实现数据绑定功能。
要将网格绑定到远程数据,请指定dataSource选项。 您可以在小部件外部创建数据源,也可以在其中传递数据源。 如果多个窗口小部件绑定到同一数据集,则必须将数据源创建为可以在不同窗口小部件中引用的对象。 如果网格是绑定到数据的唯一项目,请内联创建。
$("#grid").kendoGrid({
dataSource: {
transport: {
read: "/Home/People.json"
},
schema: {
data: "data"
}
}
});
Kendo UI提供一个数据绑定框架,可以通过定义窗口小部件的dataSource并提供远程端点来与Grid内联使用。
下面的示例演示如何实现建议的方法。 在示例中:
<div id="grid">
</div>
<script>
$(function() {
$("#grid").kendoGrid({
dataSource: {
transport: {
read: {
url: "https://api.flickr.com/services/feeds/photos_public.gne",
data: {
tags: "nature",
format: "json"
},
dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
jsonp: "jsoncallback",
}
},
schema: {
data: "items",
model: {
fields: {
published: {type: "date"}
}
}
}
},
height: 500,
scrollable: true,
selectable: true
});
});
</script>
添加数据
前面的示例使用自动生成的列呈现一个Grid,并为数据项中的每个字段提供一列。 要只在网格中显示所需的字段,请提供列列表,并指定必须在每个特定的列中显示服务器响应中items数组的哪个元素。
下面的示例演示如何在列数组中指定field属性,以便Grid显示响应中所需的数据。 列还具有title属性,该属性为列提供了更加用户友好的标题。
<div id="grid">
</div>
<script>
$(function() {
$("#grid").kendoGrid({
dataSource: {
transport: {
read: {
url: "https://api.flickr.com/services/feeds/photos_public.gne",
data: {
tags: "nature",
format: "json"
},
dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
jsonp: "jsoncallback",
}
},
schema: {
data: "items",
model: {
fields: {
published: {type: "date"}
}
}
}
},
columns: [
{field: "title", title: "Title"},
{field: "published", title: "Published On"},
{field: "media", title: "Image"}
],
height: 500,
scrollable: true,
selectable: true
});
});
</script>
处理可视化
网格不显示Image列中的图像,而是呈现JavaScript对象的字符串输出,并且日期也不以用户友好的格式显示。
下面的示例演示如何通过使用图像的嵌入式模板向Grid指示您希望小部件显示Image列的方式,通过使用列的format选项,可以正确格式化日期。
<div id="grid">
</div>
<script>
$(function() {
$("#grid").kendoGrid({
dataSource: {
transport: {
read: {
url: "https://api.flickr.com/services/feeds/photos_public.gne",
data: {
tags: "nature",
format: "json"
},
dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
jsonp: "jsoncallback",
}
},
schema: {
data: "items",
model: {
fields: {
published: {type: "date"}
}
}
}
},
columns: [
{field: "title", title: "Title"},
{field: "published", title: "Published On", format: "{0: MMM dd yyyy HH:mm}"},
{field: "media", title: "Image", template: "<img height=’100′ src=’#:data.media.m#’ title=’#: data.title#’/>"}
],
height: 500,
scrollable: true,
selectable: true
});
});
</script>
设置行模板
您可以为网格中的列显示更复杂的模板(例如,单个列中有多个字段值),同时迭代其他列的内容以生成模板输出。 在这种情况下,使用rowTemplate描述单个模板中整个行的结构。
下面的示例演示如何通过对网格应用其他样式来完全自定义网格,模板中td元素的数量与Grid定义中的列数匹配。
注意:以下示例中的html代码显示特殊的脚本块,其中包含Kendo UI模板的模板语法。 所使用的JavaScript也与HTML内容混合在一起,并且模板的语法类似于在PHP,Razor或其他服务器端模板引擎的创建中应用的语法。
<div id="grid">
</div>
<script id="detailsTemplate" type="text/x-kendo-template">
<tr class="row">
<td>
<div><span class="strong">Title: </span># if ( title ) { #
#= title #
# } #
</div>
<div><span class="strong">Username: </span>
#= author #
</div>
<div><span class="strong">Published: </span>
#= kendo.toString(new Date(published), "MMM dd yyyy HH:mm") #
</div><div><span class="strong">Link: </span>
<a href=’#= link #’ target=’_blank’>Open</a>
</div>
</td>
<td>
<div>
# $.each(tags.split(‘ ‘), function(index, data) { #
<span class="tag">
#= data #
</span>
</div>
# }); #
</div>
</td>
<td>
<div class="image">
<img src="#= media.m #" alt="#= author #" />
</div>
</td>
</tr>
</script>
<script>
$(function() {
$("#grid").kendoGrid({
dataSource: {
transport: {
read: {
url: "https://api.flickr.com/services/feeds/photos_public.gne",
data: {
tags: "nature",
format: "json"
},
dataType: "jsonp", // "jsonp" is required for cross-domain requests; use "json" for same-domain requests
jsonp: "jsoncallback",
}
},
schema: {
data: "items",
model: {
fields: {
published: {type: "date"}
}
}
}
},
columns: [
{title: "Info"},
{title: "Tags"},
{title: "Image"}
],
rowTemplate: kendo.template($("#detailsTemplate").html()),
height: 500,
scrollable: true
});
});
</script>
<style>
.row {
margin-bottom: 20px;
border-bottom: thin solid black;
}
.image {
text-align: center;
}
.tag {
font-style: italic;
}
.tag:hover {
background-color: lightblue;
}
.strong {
font-weight: bold;
}
</style>
了解最新Kendo UI最新资讯,请关注Telerik中文网!
扫描关注慧聚IT微信公众号,及时获取最新动态及最新资讯