Kendo ui 在剑道格网中添加下拉列表

Kendo ui 在剑道格网中添加下拉列表,kendo-ui,kendo-grid,kendo-asp.net-mvc,kendo-dropdown,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,Kendo Dropdown,我试图在剑道网格中添加一个下拉列表,但它会显示一个文本框 @(Html.Kendo().Grid((IEnumerable<Doc.Web.Models.Vendor.DocumentsDetails>)Model.documents_lst) .Name("grid").Scrollable() .Columns(columns => { columns.Bound(o => o.DocumentRevisionID).Vi

我试图在剑道网格中添加一个下拉列表,但它会显示一个文本框

 @(Html.Kendo().Grid((IEnumerable<Doc.Web.Models.Vendor.DocumentsDetails>)Model.documents_lst)
    .Name("grid").Scrollable()

    .Columns(columns =>
    {

        columns.Bound(o => o.DocumentRevisionID).Visible(false);
        columns.Bound(o => o.Documentnumber).Title("Document #").Width(150);
        columns.Bound(o => o.Revision).Title("Revision").Width(80);
        columns.Bound(o => o.RevisionDate).Format("{0:dd/MM/yyyy}").Title("Rev Date").Width(85);
        columns.Bound(o => o.RevisionStatus).Title("Revision</br> Status").Width(100);
        columns.Bound(s => s.DocNumberPurpose).ClientTemplate((@Html.Kendo().DropDownList()
     .BindTo((System.Collections.IEnumerable)ViewData["Purpose"])
      .Name("DocNumberPurpose")
       .DataTextField("Text")
          .DataValueField("Value")
          .ToClientTemplate()).ToHtmlString());

    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model => model.Id(o => o.DocumentRevisionID))
        .Model(model=>model.Field(o=>o.DocNumberPurpose).Editable(false))
    )

    .Events(ev=>ev.DataBound("onGridDataBound"))
    .Pageable()
    .Sortable()
    .Filterable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(5)
        .Events(events => events.Error("error_handler"))
        .Model(model => model.Id(p => p.DocumentRevisionID))
        .Read(read => read.Action("EditingInline_Read", "DesignCoverSheet").Data("additionalInfo"))

    )

     )

 <script>

         function onGridDataBound(e) {
             $('#grid script').appendTo(document.body);
         }

 </script>  
@(Html.Kendo().Grid((IEnumerable)Model.documents)
.Name(“网格”).Scrollable()
.列(列=>
{
columns.Bound(o=>o.DocumentRevisionID).Visible(false);
columns.Bound(o=>o.Documentnumber).Title(“Document#”)宽度(150);
列。装订(o=>o.Revision)。标题(“修订”)。宽度(80);
columns.Bound(o=>o.RevisionDate).Format(“{0:dd/MM/yyyy}”).Title(“revdate”).Width(85);
列绑定(o=>o.RevisionStatus)。标题(“修订状态”)。宽度(100);
columns.Bound(s=>s.DocNumberPurpose).ClientTemplate(@Html.Kendo().DropDownList())
.BindTo((System.Collections.IEnumerable)ViewData[“用途”])
.Name(“DocNumberPurpose”)
.DataTextField(“文本”)
.DataValueField(“值”)
.ToClientTemplate()).ToHtmlString();
})
.DataSource(DataSource=>DataSource
.Ajax()
.Model(Model=>Model.Id(o=>o.DocumentRevisionID))
.Model(Model=>Model.Field(o=>o.DocNumberPurpose).可编辑(false))
)
.Events(ev=>ev.DataBound(“onGridDataBound”))
.Pageable()
.Sortable()
.可过滤()
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(5)
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>Model.Id(p=>p.DocumentRevisionID))
.Read(Read=>Read.Action(“editingline\u Read”,“DesignCoverSheet”)。数据(“additionalInfo”))
)
)
函数onGridDataBound(e){
$(“#网格脚本”).appendTo(document.body);
}

你可以研究剑道格网外键栏的概念。它可以用作

columns.ForeignKey(p => p.CategoryID, (System.Collections.IEnumerable)ViewData["categories"], "CategoryID", "CategoryName").Title("Category").Width(150);

细节可以在这里找到

事实上,你非常接近:

columns.Bound(property => property.neatProperty).Width(38).EditorTemplateName("neatPropertyDropDownList").Title("NeatProperty")
然后在一个名为“neatPropertyDropDownList.cshtml”的单独视图中

请查看详细的示例,具体说明您正在尝试执行的操作,特别是在步骤3中

步骤3–嵌入剑道下拉列表

基本上,您可以通过以下方式进行:

  • 在剑道网格内,模型的属性外键必须链接到接受模板名称的EditorTemplateName。例如:

     columns.Bound(e => e.CompanyId).EditorTemplateName("CompaniesList").Title("Company").ClientTemplate("#:CompanyName#");
    
  • 上面示例中的模板名称是“CompaniesList”,它将是EditorTemplates文件夹中的cshtml视图文件

    根据上述条款:

    EditorTemplateName向网格指定,当处于创建或编辑模式时,模板应放置在名为“CompanyList”的数据文件中,该文件通过EditorTemplates目录的名称在目录中找到。因此,接下来的步骤涉及以“EditorTemplates”的名称创建文件夹,并以“CompanyList”的名称在其中放置一个空视图。代码位“ClientTemplate(“#:CompanyName#”)表示当显示处于查看模式时(即,不创建或编辑),必须显示CompanyName(在本例中,它是“Microsoft”)。完成后,剩下要做的就是创建下拉列表,该列表将在视图中使用

    创建“CompanyList”编辑器模板文件后,可在其中定义剑道下拉列表,如下所示:

    @using System.Collections
    
    @model System.Int32
    
    @(Html.Kendo().DropDownList()
    
    .BindTo((IEnumerable)ViewBag.Companies)
    
    .OptionLabel("- Select Company - ")
    
    .DataValueField("Id")
    
    .DataTextField("Name")
    
    .Name("CompanyId")
    
    )
    

    请注意,下拉列表名称必须与网格中的column属性完全相同,即“CompanyId”

    问题不清楚,请您用文字再解释一下。@NitinRawat hi!我需要的是在网格中添加一个DropDownList。我认为不可能使用ForeignKey列,因为下拉列表的数据集是完全独立的,并且与网格数据没有关系source@chamara请确保所需的脚本文件存在且顺序正确。这不会映射viewmodel的dropdownlist的选定值。
    @using System.Collections
    
    @model System.Int32
    
    @(Html.Kendo().DropDownList()
    
    .BindTo((IEnumerable)ViewBag.Companies)
    
    .OptionLabel("- Select Company - ")
    
    .DataValueField("Id")
    
    .DataTextField("Name")
    
    .Name("CompanyId")
    
    )