3

ページに Kendo Grid と ForeignKey 列があります。以下で説明するように、ForeignKey 列は ViewData を使用して入力されます。

column.ForeignKey(x => x.ProductID, (List<Product>)ViewData["products"], "ID", "ProdName");

以下に示すように、グリッドはバッチ(インセル)モードで編集可能です...

.Editable(editable => editable.Mode(GridEditMode.InCell)

グリッドの外部で定義された他のドロップダウンで選択された値に基づいてページが読み込まれた後、グリッド内の ProductID 列のコレクションを変更したいと考えています。

どうすればそれを達成できますか?jQueryを使ってそれを行うことはできますか?

ここで見つけた同様の例... http://www.telerik.com/community/forums/aspnet-mvc/grid/cascading-dropdowns-in-grid-edit---foreignkey-columns.aspx

ありがとう。

4

2 に答える 2

6

外部キー列の EditorTemplate を使用して Product ドロップダウンをフィルター処理する方法を見つけました。

これが製品の列定義です。

c.ForeignKey(x => x.ProductID, (List<Product>)ViewData["products"], "ID", "ProdName").EditorTemplateName("ProductIDEditor");

製品のエディター テンプレート、ProductIDEditor.cshtml は次のとおりです。

@using Kendo.Mvc.UI

@(Html.Kendo().DropDownListFor(m => m)
    .AutoBind(false)
    .OptionLabel("Select a value...")
    .DataTextField("ProdName")
    .DataValueField("ID")
    .DataSource(dataSource =>
    {
        dataSource.Read(read => read.Action("FilterProducts", "Home").Data("filterProducts"))
        .ServerFiltering(true);
    })                                   
)
@Html.ValidationMessageFor(m => m)

メインのVIEW Index.cshtml に、コントローラーにfilterProductsJSON オブジェクトを渡す JavaScript ハンドラーを追加しましproductIDた。

function filterChargeTypes()
{
    return {
        productID: $("#ProductID").val()
    };
}

フィルタリングイベントをリッスンするコントローラーは次のとおりです...

public ActionResult FilterProducts(string productID)
{
    // do your filtereing based on productID.
}

FilterProductsユーザーがドロップダウンをクリックしてフィルタリングされた値を取得するたびに呼び出されます。

于 2013-08-07T21:20:14.813 に答える
0

Editor Template は必要ありません。それなしでドロップダウンにバインドします。テンプレートを除いて、これを使用できます。

c.ForeignKey(x => x.ProductID, (List<Product>)ViewData["products"], "ID", "ProdName")

また

c.ForeignKey(x => x.ProductID, (System.Collections.IEnumerable)ViewData["products"], dataFieldValue: "ID", dataFieldText: "ProdName")

また、フィルタリングの場合は.Filterable()、グリッドで呼び出すだけです。

于 2014-07-31T03:16:47.697 に答える