2

ドロップダウン リストをビューに追加する例をたくさん見つけることができましたが、Webgrid もあるビューにドロップダウン リストを追加する必要があります。これには 2 つの異なるモデルが必要であり、私が見たところ、ビューごとに 1 つしか持てません。

DDL は 1 つのモデルから、グリッドは別のモデルから埋められます。

ddlで選択されたデータを使用して、グリッドに表示されたデータをフィルタリングしようとしています。

例や記事は大歓迎です。

ティア

4

2 に答える 2

6

ViewModelグリッドとの両方のデータを持つを作成しますDropDownList。このViewModelオブジェクトをビューのモデルとして使用します。

パターンの実装に関するさまざまな戦略については、SteveMichelottiの投稿を参照してください。ViewModel

たとえば、次のようなものです。

public class MyViewModel
{
    public List<Row> RowsForGrid { get; set; }
    public SelectList ItemsForDropdown { get; set; }
}
于 2012-07-02T20:23:38.993 に答える
3

グリッドに表示されたデータをフィルタリングしようとしているので、次のようにします。

メイン ビューでは、a と呼びますpartial view。あなたの場合、部分ビューはDropDownListデータを保持します。このようなもの:

@Html.Partial("DropDownView", ViewBag.DropDownViewModel as DropDownViewModel)

コントローラ アクションDropDownViewModelでは、 にデータを入力し、次のように にDropDownList渡します。DropDownViewModelViewBag

DropDownViewModel dropDownViewModel = new DropDownViewModel();
DropDownViewModel.Items = GetDropDownData(); // Fetch the items...

ViewBag.DropDownViewModel = dropDownViewModel;

ビューモデル (DropDownViewModel.cs)

public class DropDownViewModel
{
    public SelectList Items { get; set; }
}

部分ビュー (DropDownView.cshtml)

@model DropDownViewModel

@using (Html.BeginForm("YourControllerAction", "YourControllerName", FormMethod.Get))
{       
        @Html.Label("Search")&nbsp;@Html.DropDownList("YourDataId", Model.Items, String.Empty)

        <input type="submit" value="Search" id="submit"/>
}

"YourDataId"アクションメソッドのパラメーターになり、次のようにユーザーが選択した値が含まれます。

public virtual ActionResult Index(int? YourDataId, GridSortOptions sort)
{
    ...
}
于 2012-07-02T20:28:35.700 に答える