[英]dropdownlist in kendo grid not working
Im trying to use incell editing and use of the http://demos.telerik.com/aspnet-mvc/grid/editing-custom but is can't find my partial view that the dropdownlist should be rendered from. 我正在尝试使用单元格编辑和http://demos.telerik.com/aspnet-mvc/grid/editing-custom的使用,但是找不到我的部分观点,即应该从下拉菜单中进行渲染。
Partial view (Testview.cshtml) 局部视图(Testview.cshtml)
@using Kendo.Mvc.UI
@(Html.Kendo().DropDownList()
.Name("ResourceType") // Name of the widget should be the same as the name of the property
.DataValueField("Id") // The value of the dropdown is taken from the EmployeeID property
.DataTextField("Name") // The text of the items is taken from the EmployeeName property
.BindTo((System.Collections.IEnumerable)ViewData["defaultResourceType"]) // A list of all employees which is populated in the controller
) )
This is my grid: 这是我的网格:
@(Html.Kendo().Grid<RMS.Admin.ViewModel>()
.Name("ResourceGrid")
.Columns(columns =>
{
columns.Bound(c => c.ResourceId).Hidden();
columns.Bound(c => c.ResourceName);
columns.Bound(c => c.Descritption);
columns.Bound(c => c.ResourceType.Name).ClientTemplate("#=ResourceType.Name#");
columns.Bound(c => c.Approved);
columns.Bound(c => c.IsEnabled);
columns.Command(command =>
{
command.Edit();
command.Destroy();
}).Width(172).Title("Edit/Delete");
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Scrollable()
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(s => s.ResourceId);
model.Field(s => s.ResourceType).DefaultValue(ViewData["defaultResourceType"] as RMS.Admin.ViewModel.ResourceTypeId);
})
.Create(update => update.Action("CreateResource", "Home"))
.Read(read => read.Action("ReadResource", "Home"))
.Update(update => update.Action("SaveSystem", "Home"))
.Destroy(destroy => destroy.Action("RemoveSystem", "Home"))
)
) )
Here is a part of my model: 这是我的模型的一部分:
public string ResourceUserId { get; set; }
[UIHint("Testview")]
public ResourceTypeId ResourceType { get; set; }
This is in my controller where i bind the data: 这是在我绑定数据的控制器中:
private void GetResourceTypeId()
{
//string [] list = new string[]{"Image", "Document", "Other"};
IList<ViewModel.ResourceTypeId> list = new List<ViewModel.ResourceTypeId>();
var a = new ViewModel.ResourceTypeId
{
Name = "Image",
Id = 1
};
var b = new ViewModel.ResourceTypeId
{
Name = "Document",
Id = 2
};
var c = new ViewModel.ResourceTypeId
{
Name = "Other",
Id = 3
};
list.Add(a);
list.Add(b);
list.Add(c);
ViewData["defaultResourceType"] = list.First();
}
I get this error when trying to render the grid: The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. 在尝试渲染网格时出现此错误:您正在寻找的资源(或其依赖项之一)可能已被删除,名称更改或暂时不可用。 Please review the following URL and make sure that it is spelled correctly. 请查看以下网址,并确保其拼写正确。
What am i missing? 我想念什么?
First off your trying to bind just to one item with ViewData["defaultResourceType"] = list.First();
首先,您尝试使用ViewData["defaultResourceType"] = list.First();
仅绑定到一个项目ViewData["defaultResourceType"] = list.First();
. 。 Instead you should bind to your whole list and then set the default option with .Value("1")
so that it has "Images" by default. 相反,您应该绑定到整个列表,然后使用.Value("1")
设置默认选项,以便默认情况下具有“图像”。
@(Html.Kendo().DropDownList()
.Name("ResourceType")
.DataValueField("Id")
.DataTextField("Name")
.BindTo((System.Collections.IEnumerable)ViewData["ResourceTypeList"])
.Value(ViewData["DefaultResourceType"])
);
Also for a template for a column in MVC you may just want to set it with EditorTemplateName 同样对于MVC中列的模板,您可能只想使用EditorTemplateName进行设置
columns.Bound(e => e.myColumn).EditorTemplateName("dropdownTemplate")
And then define the template that you want to use somewhere else on the page. 然后在页面上的其他地方定义要使用的模板。
<script id="dropdownTemplate" type="text/x-kendo-template">
@(Html.Kendo().DropDownList()
.Name("myDropDown")
.....
.ToClientTemplate()
)
</script>
.ToClientTemplate()
or the script tags.
您不必添加.ToClientTemplate()
或脚本标签。
You would reference it by the file name.
您可以通过文件名来引用它。
You could then use the template on multiple pages in the project.
然后,您可以在项目的多个页面上使用模板。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.