C# 剑道UI向网格中添加下拉列表(MVC)

C# 剑道UI向网格中添加下拉列表(MVC),c#,jquery,asp.net-mvc,kendo-ui,C#,Jquery,Asp.net Mvc,Kendo Ui,我绑定到一个网格类(UserId、FirstName、LastName、Choice)。 有人知道如何在MVC4中将此代码放入剑道网格的列(选项)中吗: @(Html.Kendo().DropDownList() .Name("Test") .DataTextField("Text") .DataValueField("Value") .Events(e => e.Change("change")) .BindTo(new Lis

我绑定到一个网格类(UserId、FirstName、LastName、Choice)。 有人知道如何在MVC4中将此代码放入剑道网格的列(选项)中吗:

@(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>
我还需要一个文本(“选项1”,或“选项2”)在后端代码。 有什么解决办法吗? 提前谢谢

已编辑

我完全按照他们说的做了:

视图:

控制器:

public ActionResult Index()
    {
        PopulateCategories();
        return View();
    }


但这不起作用

您只需查看他们提供的文档:

这是一个自定义网格,因此可能还涉及一些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"))
)
)
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(p=>p.ProductName);
columns.Bound(p=>p.Category).ClientTemplate(“#=Category.CategoryName”).Width(160);
列宽(120);
Command(Command=>Command.Destroy()).Width(90);
})
.ToolBar(ToolBar=>
{
toolBar.Create();
toolBar.Save();
})
.Editable(Editable=>Editable.Mode(GridEditMode.InCell))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(新的{style=“height:430px;”})
.DataSource(DataSource=>DataSource
.Ajax()
.Batch(真)
.ServerOperation(错误)
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>
{
model.Id(p=>p.ProductID);
model.Field(p=>p.ProductID).可编辑(false);
model.Field(p=>p.Category).DefaultValue(
ViewData[“defaultCategory”]作为Kendo.Mvc.Examples.Models.ClientCategoryViewModel);
})
.页面大小(20)
.Read(Read=>Read.Action(“编辑自定义读取”、“网格”))
.Create(Create=>Create.Action(“编辑自定义创建”、“网格”))
.Update(Update=>Update.Action(“编辑自定义更新”、“网格”))
.Destroy(Destroy=>Destroy.Action(“编辑自定义_Destroy”,“网格”))
)
)

您的csHTML文件需要绑定触发器上的输入和回传,无论您在做什么

我认为这将帮助您实现您需要的-->>


请给我们看看您的控制器好吗?此外,如果这是MVC4,通常您将选择1来自代码隐藏的文本。。然后通过@model我对自己说了这句话,同时我看到了发布的演示。其中是
).ClientTemplate(“#=Category.CategoryName”)。
已定义。我想象它指向一个独立的剑道ddl,或者我完全错了。只是看不到这一点点代码是如何呈现DDL的。代码不会呈现dll,它将使用razor语法和iis进行绑定。我已经有一段时间没有和剃须刀打交道了,但我会回去再检查一次以确定!我记得如果我没记错的话,剑道在mvc中并不是最友好的!通过查看文档和HTML部分,似乎可以更清楚地了解正在发生的事情。我知道您的代码是直接从文档中提取出来的,并且是从给定的
ClientTemplate(“#=Category.CategoryName”)
对我来说没有任何意义。好吧,逻辑选项是HTML表单中的参数将是这个Category.CategoryName输入通过HTTP.POST值从表单绑定到后端。目前,我使用nancy server和owin更多,它们与通过ajax绑定到C#后端的发布值一起工作(尽可能保持严格的键入),但这将是合乎逻辑的结果。。再次需要再次检查@Pogrindis-我正在处理类似的问题,只是我想在网格渲染后更新下拉列表中的项目列表。当前dropdownlist是在渲染栅格时定义的。该模板仅加载一次。那么,如何在网格渲染后更新此列表或模板?
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();
        }       
@(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"))
)
)