我已完成以下问题中显示的所有步骤:
How can I set and get the value of a dropdownlist in a grid in Kendo UI MVC?
但最后,只有我的列表中的第一个值出现在下拉列表中。例如,只有“admin”。我无法在弹出编辑模式中选择其他值(样式是下拉列表,但它不会打开,值“admin”是唯一可见的值。)
这是我的观点:
@(Html.Kendo().Grid<A.Models.Perm>()
.Name("PermGrid")
.Columns(columns =>
{
columns.Bound(r => r.Id).Visible(false);
columns.Bound(r => r.Name);
columns.Bound(r =>
r.PermType).EditorTemplateName("PermTypeEditor");
columns.Command(command =>
{
command.Edit() ;
});
})
.DataSource(datasoure => datasoure.Ajax()
.Model(model => model.Id(record => record.Id))
.Read(read => read.Action("GetAll", "Permi"))
.Update(update => update.Action("Update",
"Permi"))
.PageSize(10)
)
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Sortable()
.Selectable()
.Events(e => e.Edit("onEdit"))
.Pageable(pageable =>
{
pageable.Refresh(true);
pageable.PageSizes(true);
})
)
控制器:
public ActionResult GetAll([DataSourceRequest] DataSourceRequest request)
{
var Permi = GetPermi();
return Json(Permi.ToDataSourceResult(request, record => new
{
record.Id,
record.Name,
record.PermType,
}));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update([DataSourceRequest] DataSourceRequest request,
Permission perm)
{
if (perm != null && ModelState.IsValid)
{
_db.Update(perm);
_db.SaveChanges();
}
return Json(ModelState.ToDataSourceResult());
}
private static IEnumerable<Permission> GetPermi()
{
var dbs = new AFBContext();
var list3 = (from Item1 in dbs.Permi.ToList() select Item1);
return list3;
}
型号:
public int Id { get; set; }
public string Name { get; set;
[UIHint("PermTypeEditor")]
public string PermType { get; set; }
TemplateEditor:
@model string
@(Html.Kendo().DropDownList()
.Name("PermType")
.Value(Model)
.SelectedIndex(0)
.BindTo(new string[] { "Admin", "Guest", "Normal" }))
好吧,它似乎适用于Firefox而不是Chrome。
答案 0 :(得分:0)
我遇到了同样的问题,我现在可以获取列表来加载所有项目但仅限于第一行
外键模板中的:
@(Html.DropDownList( "Column Name", new SelectList( new [] { "Admin", "Guest", "Normal" })))
你的模型是正确的。
控制器:
public ActionResult PermType_Read( [DataSourceRequest] DataSourceRequest request )
{
return Json( GetPermiInfo().ToDataSourceResult( request ), JsonRequestBehavior.AllowGet );
}
private static IEnumerable<Permission> GetPermiInfo()
{
var permi = GetPermi()
// Try setting your list up like this, using your model
return permi.Select( permissionInfo => new Permission
{
Id = permissionInfo.Id,
Name= blogCommentInfo.Name,
PermType = permissionInfo.PermTypeId? // I'm not sure if you have Id's for your different types
} );
}
查看:
@(Html.Kendo().Grid<Permission>()
.Name( "grid" )
.Columns( columns =>
{
columns.Bound( f => f.Id ).Hidden();
columns.Bound( f => f.Name );
columns.ForeignKey( c => c.ForeignKey, new SelectList( new[]{
new {text="Admin",value = "1"},
new {text="Guest",value = "2"},
new {text="Normal",value = "3"},
}, "value", "text" ) );
} )
.Pageable( pageable => pageable.ButtonCount( 5 ) )
.Editable(ed=>ed.Mode(GridEditMode.InCell))
.Scrollable()
.DataSource( dataSource => dataSource
.Ajax()
.PageSize( 20 )
.Model(model =>
{
model.Id(b => b.Id);
})
.Update(up=>up.Action("Update","Permi"))
.Read( read => read.Action( "PermType_Read", "Permi" ) )
)
.Selectable( select => select.Mode( GridSelectionMode.Single ) )
)
希望有了这个,你可以得到更多,这绝不是你的问题的正确答案,只是试图帮助,以便其他人可以帮助我们哈哈尔
答案 1 :(得分:0)
好的,这是旧的,但我发现问题是什么。 在此之前,问题自动解决,然后在几天后出现问题。 香港专业教育学院用firebug检查页面,发现在app中有一个Jquery / import类的两个调用方法!一个在sharedlayout中,另一个在独特视图中(上面一个)! 共享布局中的一个连接到jquery站点并下载最新的一个,但视图中的一个使用本地站点。 起初,网络服务器防火墙阻止了第一个,网站变得更加流行。但是当防火墙修复了jquery url时,重复的Jquery调用/ import会避免dropdown工作正常。 所以我在问题解决后删除了第二个。