1

親切な態度:-

  • 私は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 では、ドロップダウンリストが回転し続けます

私が間違っていることを教えてください。他にもっと良いアプローチ はありますか 親切にいくつかのコードを投稿してください....ありがとう!!

4

0 に答える 0