如何在 Kendo 模板中动态设置列
How to set columns dynamically in Kendo template
如何在 kendo grid.In 我的 kendo 网格的 Kendo 模板中动态设置列,列可能会根据用户动态变化 preference.How动态创建 Kendo 模板?我正在使用 Kendo JavaScript,我可以切换到 Kendo MVC 如果我可以实现同样的事情 there.Is 还有任何其他方法实现这个?
<script id="rowTemplate" type="text/x-kendo-template">
<tr class="k-master-row">
<td>
<div>#=column1#</div>
</td>
<td><span class="mydesign" title="column2#"</span></td>
<td>#column3#</td>
<td>#=column4#</td>
</tr>
</script>
编辑:在 Kendo 网格中,我们正在动态设置列。现在的问题是我们如何设置内容 table 和 header table 的动态宽度。如果它超过最大宽度,我们如何启用水平滚动条。有什么方法可以实现吗?
我没有将 kendo 用于 MVC,但我仍然可以解释如何使用常规 kendo 函数执行此操作。
基本上,您可以通过将 html 字符串传递给 kendo.template
来创建新的 kendo 模板实例。然后您可以将新模板实例分配给网格的 rowTemplate
(或 altRowTemplate
),然后调用 dataSource.read()
强制刷新网格。
您可以生成自己的 html 字符串或更新页面中的现有模板,然后使用 jquery 的 html()
将其转换为字符串。
例如:
var htmlTemplate = '';
if (userPreferences.likeRed) {
htmlTemplate ='<tr class="k-master-row"><td style="background-color:red">#column1#</td></tr>'
} else {
htmlTemplate ='<tr class="k-master-row"><td style="background-color:green">#column1#</td></tr>'
}
$("#grid").data("kendoGrid").rowTemplate = kendo.template(htmlTemplate);
$("#grid").data("kendoGrid").dataSource.read();
为了使用有条件选择的操作来格式化 Kendo Grid
列值,您可以使用以下合适的示例之一。更多信息:How Do I Have Conditional Logic in a Column Client Template?
下面是一些使用示例。借助这种方法,您可以轻松生成不同的模板。
UI 对于 Javascript:
{
field: "EmployeeName", type: "string", width: "55px", title: "Employee Name",
template: "#= GetEditTemplate(data) #"
}
UI 对于 MVC:
...
columns.Bound(t => t.EmployeeName)
.Title("Status Name")
.Template(@<text></text>)
.ClientTemplate("#= GetEditTemplate(data)#")
.Width("55px");
...
示例一:在这个例子中,Model
通过使用"data"[传递给Javascript
方法 属性 并且模型 属性 用于 "if" 条件。
<script>
//Change the color of the cell value according to the given condition
function GetEditTemplate(data) {
var html;
if (data.StatusID == 1) {
html = kendo.format(
//"<a class=\"k-button\" href='" + '@Url.Action("Edit1", "Controller")' + "/{0}" + " '>Edit</a> ",
"<span class='text-success'>" +
data.EmployeeName
+ "</span>"
);
}
else {
html = kendo.format(
//"<a class=\"k-button\" href='" + '@Url.Action("Edit2", "Controller")' + "/{0}" + " '>Edit</a> ",
"<span class='text-danger'>Cancel</span>"
);
}
return html;
}
</script>
例二:
<script>
function Getvalue(value) {
// console.log(value);
if (value && value != null && value.indexOf("A") == 0)
return "<b style='color:red'>" + value + "</b>";
else
return "";
}
$(document).ready(function () {
$("#grid").kendoGrid({
dataSource: localDataSource,
columns: [
{
field: "FirstName",
title: "First Name", template: '#=Getvalue(FirstName)#'
}
],
});
});
</script>
希望这对您有所帮助...
这将在 ASP.NET MVC/Razor 中起作用,如果您提前准备 collection 动态列定义,然后将它们放入 cshtml 的视图模型中。然后遍历 collection 并插入与数据源匹配的字段名称、header 标题、所需宽度等...
$("#grid-quick").kendoGrid({
pageable: {
pageSizes: [10, 20, 50, 100]
},
sortable: { mode: "multiple" },
columns: [
@{
foreach (var col in Model.Columns)
{
@:{ field: "@col.Name.Replace(".","_")", width: "@col.Width" + "px" },
}
}
],
filterable: false,
dataSource: {
serverPaging: true,
serverSorting: true,
pageSize: 20,
type: 'aspnetmvc-ajax',
schema: {
data: "Data",
total: "Total",
model: {
fields: {
@{
foreach (var col in Model.Columns)
{
@: "@col.Name.Replace(".","_")" : { type: "string" },
}
}
}
}
},
transport: {
read: {
url: oVariables.baseURL + "Query/DynamicResults",
dataType: "json",
type: "post"
}
}
}
});
如何在 kendo grid.In 我的 kendo 网格的 Kendo 模板中动态设置列,列可能会根据用户动态变化 preference.How动态创建 Kendo 模板?我正在使用 Kendo JavaScript,我可以切换到 Kendo MVC 如果我可以实现同样的事情 there.Is 还有任何其他方法实现这个?
<script id="rowTemplate" type="text/x-kendo-template">
<tr class="k-master-row">
<td>
<div>#=column1#</div>
</td>
<td><span class="mydesign" title="column2#"</span></td>
<td>#column3#</td>
<td>#=column4#</td>
</tr>
</script>
编辑:在 Kendo 网格中,我们正在动态设置列。现在的问题是我们如何设置内容 table 和 header table 的动态宽度。如果它超过最大宽度,我们如何启用水平滚动条。有什么方法可以实现吗?
我没有将 kendo 用于 MVC,但我仍然可以解释如何使用常规 kendo 函数执行此操作。
基本上,您可以通过将 html 字符串传递给 kendo.template
来创建新的 kendo 模板实例。然后您可以将新模板实例分配给网格的 rowTemplate
(或 altRowTemplate
),然后调用 dataSource.read()
强制刷新网格。
您可以生成自己的 html 字符串或更新页面中的现有模板,然后使用 jquery 的 html()
将其转换为字符串。
例如:
var htmlTemplate = '';
if (userPreferences.likeRed) {
htmlTemplate ='<tr class="k-master-row"><td style="background-color:red">#column1#</td></tr>'
} else {
htmlTemplate ='<tr class="k-master-row"><td style="background-color:green">#column1#</td></tr>'
}
$("#grid").data("kendoGrid").rowTemplate = kendo.template(htmlTemplate);
$("#grid").data("kendoGrid").dataSource.read();
为了使用有条件选择的操作来格式化 Kendo Grid
列值,您可以使用以下合适的示例之一。更多信息:How Do I Have Conditional Logic in a Column Client Template?
下面是一些使用示例。借助这种方法,您可以轻松生成不同的模板。
UI 对于 Javascript:
{
field: "EmployeeName", type: "string", width: "55px", title: "Employee Name",
template: "#= GetEditTemplate(data) #"
}
UI 对于 MVC:
...
columns.Bound(t => t.EmployeeName)
.Title("Status Name")
.Template(@<text></text>)
.ClientTemplate("#= GetEditTemplate(data)#")
.Width("55px");
...
示例一:在这个例子中,Model
通过使用"data"[传递给Javascript
方法 属性 并且模型 属性 用于 "if" 条件。
<script>
//Change the color of the cell value according to the given condition
function GetEditTemplate(data) {
var html;
if (data.StatusID == 1) {
html = kendo.format(
//"<a class=\"k-button\" href='" + '@Url.Action("Edit1", "Controller")' + "/{0}" + " '>Edit</a> ",
"<span class='text-success'>" +
data.EmployeeName
+ "</span>"
);
}
else {
html = kendo.format(
//"<a class=\"k-button\" href='" + '@Url.Action("Edit2", "Controller")' + "/{0}" + " '>Edit</a> ",
"<span class='text-danger'>Cancel</span>"
);
}
return html;
}
</script>
例二:
<script>
function Getvalue(value) {
// console.log(value);
if (value && value != null && value.indexOf("A") == 0)
return "<b style='color:red'>" + value + "</b>";
else
return "";
}
$(document).ready(function () {
$("#grid").kendoGrid({
dataSource: localDataSource,
columns: [
{
field: "FirstName",
title: "First Name", template: '#=Getvalue(FirstName)#'
}
],
});
});
</script>
希望这对您有所帮助...
这将在 ASP.NET MVC/Razor 中起作用,如果您提前准备 collection 动态列定义,然后将它们放入 cshtml 的视图模型中。然后遍历 collection 并插入与数据源匹配的字段名称、header 标题、所需宽度等...
$("#grid-quick").kendoGrid({
pageable: {
pageSizes: [10, 20, 50, 100]
},
sortable: { mode: "multiple" },
columns: [
@{
foreach (var col in Model.Columns)
{
@:{ field: "@col.Name.Replace(".","_")", width: "@col.Width" + "px" },
}
}
],
filterable: false,
dataSource: {
serverPaging: true,
serverSorting: true,
pageSize: 20,
type: 'aspnetmvc-ajax',
schema: {
data: "Data",
total: "Total",
model: {
fields: {
@{
foreach (var col in Model.Columns)
{
@: "@col.Name.Replace(".","_")" : { type: "string" },
}
}
}
}
},
transport: {
read: {
url: oVariables.baseURL + "Query/DynamicResults",
dataType: "json",
type: "post"
}
}
}
});