提问人:Jake 提问时间:9/12/2013 最后编辑:Ulysse BNJake 更新时间:11/18/2023 访问量:31830
Kendo UI 将 DropDownList 添加到网格中 (MVC)
Kendo UI add DropDownList into Grid (MVC)
问:
我正在绑定到 Grid 类(UserId,FirstName,LastName,Choice)。 有谁知道如何将此代码放在 MVC 4 中 Kendo Grid 的列 (Choice) 中:
@(Html.Kendo().DropDownList()
.Name("Test")
.DataTextField("Text")
.DataValueField("Value")
.Events(e => e.Change("change"))
.BindTo(new List<SelectListItem>()
{
new SelectListItem()
{
Text = "Option1",
Value = "1"
},
new SelectListItem()
{
Text = "Option2",
Value = "2"
}
}))
<script>
function change() {
var value = $("#Choice").val();
}
</script>
....
columns.Bound(p=> p.FirsName);
columns.Bound(p => p.LastName);
//How to Bind Choice???
我还需要后端代码中的文本(“Option1”或“Option2”)。 有什么解决办法吗?
编辑
我完全按照他们说的做了:
视图:
columns.Bound(p => p.Choice).ClientTemplate("#=Choice#");
控制器:
public ActionResult Index()
{
PopulateCategories();
return View();
}
.....
private void PopulateCategories()
{
var dataContext = new TestDB();
var categories = dataContext.Peoples
.Select(c => new People()
{
ChoiceID = c.ChoiceID,
Choice = c.Choice
})
.OrderBy(e => e.Choice);
ViewData["categories"] = categories;
ViewData["defaultCategory"] = categories.First();
}
但这行不通......
答:
0赞
Pogrindis
9/12/2013
#1
你只需要看看他们提供的文档:http://demos.kendoui.com/web/grid/editing-custom.html
它是一个自定义网格,因此也可能涉及一些 JS 更改。您正在从模型绑定,kendo.js 将负责其余部分。
@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.ClientProductViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.ProductName);
columns.Bound(p => p.Category).ClientTemplate("#=Category.CategoryName#").Width(160);
columns.Bound(p => p.UnitPrice).Width(120);
columns.Command(command => command.Destroy()).Width(90);
})
.ToolBar(toolBar =>
{
toolBar.Create();
toolBar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.ProductID);
model.Field(p => p.ProductID).Editable(false);
model.Field(p => p.Category).DefaultValue(
ViewData["defaultCategory"] as Kendo.Mvc.Examples.Models.ClientCategoryViewModel);
})
.PageSize(20)
.Read(read => read.Action("EditingCustom_Read", "Grid"))
.Create(create => create.Action("EditingCustom_Create", "Grid"))
.Update(update => update.Action("EditingCustom_Update", "Grid"))
.Destroy(destroy => destroy.Action("EditingCustom_Destroy", "Grid"))
)
)
您的 csHTML 文件需要将输入和回传绑定到触发器上,无论您正在执行哪个操作。
评论
0赞
CSharper
4/23/2014
当我看到那个发布的演示时,我对自己说了这句话。其中被定义。我想它指向一个独立的剑道 ddl,或者我完全错了。只是没有看到那一小段代码是如何呈现 ddl 的).ClientTemplate("#=Category.CategoryName#").
2赞
Pogrindis
4/23/2014
代码不会呈现 dll,它将使用 razor 语法和 iis 根据需要进行绑定。我已经有一段时间没有处理过剃须刀了,但生病了,回去仔细检查以确保!如果我没记错的话,我记得剑道对 mvc 不是最人性化的!
2赞
CSharper
4/23/2014
通过查看文档和 HTML 部分,似乎更清楚地了解发生了什么。我知道你的代码直接来自文档,从给出的内容对我来说毫无意义。ClientTemplate("#=Category.CategoryName#")
0赞
Pogrindis
4/23/2014
那么合乎逻辑的选择是,来自 HTML 表单的参数将是这个 Category.CategoryName 输入,通过 HTTP 从表单绑定到后端。目前我使用的是 nancy 服务器和 owin 的 POST 值,它们适用于通过 ajax 绑定到 C# 后端的发布值(以使其尽可能严格地键入),但这将是合乎逻辑的结果。.再次需要仔细检查!
0赞
bitshift
10/8/2016
@Pogrindis - 我正在处理同样的问题,除了我想在网格渲染后更新下拉列表的项目列表。当前下拉列表是在呈现网格时定义的。模板仅加载一次。那么,如何在网格渲染后更新此列表或模板呢?
0赞
DinoMyte
10/18/2013
#2
我认为这将帮助您实现所需的目标 - >>
http://www.kendoui.com/forums/kendo-ui-web/grid/want-to-add-dropdownlist-in-my-grid.aspx
评论