親切な態度:-
- 私は2つのドロップダウンリストを持つ剣道UIグリッドで非常に単純なモデルで作業しています
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- column.ForeignKeys を使用しているアカウントと、editortemplate「AccountList.cshtml」を含む「ViewData」リスト
- 別の ddl(PROBLEMATIC ONE- *でマーク)VaryDDL も列です。EditorViewDate および EditorTemplate 名を使用する ForeignKeys
これらの dropdownList @model IEnumerable(GridInForm.Models.Product) - ビューで使用されるモデルを取得するために、Columns.ForeignKeys と EditorTemplateName を使用しています。
<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」に渡します。これは、ビューデータからproductidを取得する読み取りメソッドを持つ剣道UIドロップダウンリストにすぎず、productIdに基づいて、リストアイテムをロードするだけです(if productid=1 の場合、最初のリスト項目など...
- 小さなプロトタイプ列を実行しようとしています。FOREIGNKEYS、EDITORVIEWDATA、および EDITORTEMPLATENAME 機能
- しかし、どういうわけか読み取りメソッドが機能していません (a)つまり、ブレークポイントを配置してもそこで停止しません (b)UI では、ドロップダウンリストが回転し続けます
私が間違っていることを教えてください。他にもっと良いアプローチ はありますか 親切にいくつかのコードを投稿してください....ありがとう!!