私のプロジェクトには、通常の基本的なKendo UIグリッドバインドを実行できないという2つの主な問題があります。 1.私は、必要なSQLデータへの完全なアクセス権を持っていません(私はビューを作成できません)。2.フィールドの1つは非常に大きいです(フィールドはViewModelをオーバーロードします)。剣道UIグリッドを2つのテーブルEFで正しくバインドして塗りつぶすにはどうすればよいですか?
私はグリッドを動作させることができましたが、私はそのタスクを達成するためのよりよい方法があると感じています。私の問題は、本質的には、私はDBの単一のテーブルにグリッドバインドすることしかできないということです。これを受け入れるために、私は外部キーフィールドにバインドし、readからデータを書き込むためにclientTemplateを使用しましたが、フィールドをデータにバインドするより直接的な方法が必要であると感じました。私の読んだデータは、JSONに変換されたEFからのLinqジョインのactionresultです。 誰かが提案をすることができれば、ここに私のコードです。テーブル2のD_Typeは、列に直接バインドしようとしているものです。
@(Html.Kendo().Grid<ProjectName.Models.Table1>()
.Name("grid")
.Scrollable()
.ColumnMenu()
.Reorderable(reorder => reorder.Columns(true))
.Columns(columns =>
{
columns.Bound(c => c.P_Name);
columns.Bound(c => c.E_Name);
//Cannot be directly bound to a column because it is part of Table2 table
columns.Bound(c => c.TypeId).Title("Type").ClientTemplate("#= D_Type #").Filterable(false);
columns.Command(command => command.Custom("Details").Click("showDetails")).Title("Results").Width(80);
columns.Bound(c => c.Destination);
columns.Bound(c => c.Location);
columns.Bound(c => c.Version);
columns.Bound(c => c.StartDt);
columns.Bound(c => c.EndDt);
columns.Bound(c => c.StartDt).Title("Duration").ClientTemplate("#: calcDuration(StartDt, EndDt) #").Sortable(false).Filterable(false);
columns.Bound(c => c.);
columns.Bound(c => c.MiscNotes).ClientTemplate("#: errorDisplay(ResultObject) # ").Sortable(false).Filterable(false);
})
//Style dictates full grid height
.HtmlAttributes(new { style = "height: 725px;" })
.Filterable()
.Resizable(resize => resize.Columns(true))
.Sortable(sortable => sortable
.AllowUnsort(true)
.SortMode(GridSortMode.SingleColumn))
.Pageable(pageable => pageable
.Refresh(false)
.PageSizes(true)
.ButtonCount(5))
.Events(e => e.DataBound("onDataBound"))
.DataSource(dataSource => dataSource
.Ajax()
.Sort(sort => sort.Add("StartDt").Descending())
.Read(read => read.Action("Project_Read", "Grid"))
.PageSize(20)
.ServerOperation(true)
)
)
これは99%の時間で動作しますが、残念ながらフィールドの1つのサイズのためにこのようにSystem.OutofMemoryエラーが発生しています。 – fdsafdsafdsafdsafs
それから、それをやり直してください。(オンデマンドでD_Typeを取得して表示しています)...フィールドのサイズが大きすぎる場合、グリッドが役立つことはあまりありません。私はまた、そのようなデータを表示する必要性について疑問を呈します(特にあなたのものではなく、顧客は1200ページのレポートを読む必要はなく、実際にはXLSXダンプが必要です)...コンピュータが処理できない快適に、人間は実際にスクリーン上のデータで意味のある何かを処理/実行しようとしていますか? –
あなたの解決策を読んで私の誤りがどこにあるかを私に見せてくれました。私はViewModelを別のモデルではなくActionResult Readに配置しました。これが、VMに大量のデータを送信していた理由です。時には一歩踏み出して物事をもう一度読む必要があることもあります。ありがとうございました。 – fdsafdsafdsafdsafs