请留意:-
- 我正在使用具有 2 个下拉列表的 Kendo UI Grid 使用非常简单的模型
我有 2 个模型类 (a)Category (b)Products
public class Category { public int CategoryID { get; set; } public string Name { get; set; } public string Address { get; set; } public System.DateTime Date1 { get; set; } public string ListA { get; set; } public string ListB { get; set; } public int Count { get; set; } public decimal Price { get; set; } public bool decision { get; set; } public IEnumerable<Product> Products { get; set; } } public class Product { public string Person { get; set; } public int ProductID { get; set; } public bool Chk { get; set; } public decimal Balance { get; set; } public decimal Deposit { get; set; } public decimal Adjustment { get; set; } public decimal NewBalance { get; set; } [UIHint("AccountList"), Required] public string Account { get; set; } [UIHint("VaryDDL")] public string VaryDDList { get; set; } }
网格中的 2 个下拉列表,第一个 ddl- Account 正在使用 columns.ForeignKeys 以及带有编辑器模板“AccountList.cshtml”的“ViewData”列表
- 另一个 ddl(PROBLEMATIC ONE- Marked with * )VaryDDL 这也是 columns.ForeignKeys 使用 EditorViewDate 和 EditorTemplate 名称
我正在使用 columns.ForeignKeys 和 EditorTemplateName 来获取这些 dropdownList @model IEnumerable(GridInForm.Models.Product) - 视图中使用的模型
<div> @(Html.Kendo().Grid(Model.Products) .Name("Products") .Editable(editable => editable.Mode(GridEditMode.InCell)) .Columns(columns => { columns.Bound(p => p.Chk).ClientTemplate("<input type='checkbox' ${ Chk == true ? checked='checked' : ''} disabled />"); columns.Bound(p => p.Person).ClientTemplate("<a href='\\#'>#= Person #</a>").ClientFooterTemplate("Total: #=count#"); columns.ForeignKey(p => p.Account, (System.Collections.IEnumerable)ViewData["TestVDt"], "Value", "Text"); ***columns.ForeignKey(p => p.VaryDDList, Model.Products, "ProductID", "Person") .EditorViewData(new { ProductID = "#=ProductID#" }) .EditorTemplateName("VaryDDL");*** columns.Bound(p => p.ProductID).Hidden(); columns.Bound(p => p.Balance).ClientTemplate("#= kendo.format('{0:c}', Balance) #"); columns.Bound(p => p.Deposit).ClientTemplate("#= kendo.format('{0:c}', Deposit) #"); columns.Bound(p => p.Adjustment).ClientTemplate("#= kendo.format('{0:c}', Adjustment) #").ClientFooterTemplate("Total: #=sum#"); columns.Bound(p => p.NewBalance).ClientTemplate("#= kendo.format('{0:c}', NewBalance) #").ClientTemplate("#= kendo.format('{0:c}', Deposit + Adjustment) #"); }) .DataSource(dataSource => dataSource.Ajax() .Events(e => e.Change("TestScript")) .Model(model => { model.Id(p => p.ProductID); model.Field(p => p.ProductID).Editable(false); model.Field(p => p.Person).Editable(false); model.Field(p => p.Balance).Editable(false); model.Field(p => p.Deposit).Editable(false); model.Field(p => p.NewBalance).Editable(false); }) .Aggregates(aggregates => { aggregates.Add(p => p.Person).Count(); aggregates.Add(p => p.Adjustment).Sum(); }) .Batch(true) .ServerOperation(false) )) </div>
editortemplatename 查看数据(VaryDDL.cshtml)
@(Html.Kendo().DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(""))
.DataValueField("Value")
.DataTextField("Text")
.OptionLabel("Select")
.DataSource(dataSource => dataSource
.Read(read => read.Action("ChkProduct", "Home", new { ProductID = ViewData["ProductID"] }))
)
)
上述控制器动作:
public JsonResult ChkProduct(int prodid)
{
if (prodid == 1)
{
List<SelectListItem> Slt1 = new List<SelectListItem>();
SelectListItem sltLst1 = new SelectListItem();
Slt1 = new List<SelectListItem>
{
new SelectListItem { Text="VV1", Value="1" },
new SelectListItem { Text="VV2", Value="2" },
new SelectListItem { Text="VV3", Value="3" }
};
return Json(Slt1.ToList(), JsonRequestBehavior.AllowGet);
}
else
{
List<SelectListItem> Slt2 = new List<SelectListItem>();
Slt2 = new List<SelectListItem>
{
new SelectListItem { Text="VV4", Value="1" },
new SelectListItem { Text="VV5", Value="2" },
new SelectListItem { Text="VV6", Value="3" }
};
return Json(Slt2.ToList(), JsonRequestBehavior.AllowGet);
}
}
- 对于 VaryDLL,我将 ProductId 作为 ViewData 传递给 Editortemplate “VaryDLL”,它只不过是 kendo ui 下拉列表,它有一个读取方法,从视图数据中获取 productid,并且基于 productId 我只是加载列表项(如果productid=1 然后是第一个列表项,依此类推...
- 我正在尝试做小型原型列。外键,EDITORVIEWDATA 和 EDITORTEMPLATENAME 功能
- 但不知何故,读取方法不起作用(a)我的意思是当我放一个断点时它不会停在那里(b)并且在 UI 中,下拉列表将继续旋转
请让我知道我做错了什么,还有其他更好的方法 请发布一些代码....谢谢!