0

データにビューモデルを使用する Telerik Grid を持つ ASP.NET MVC3 ビューがあります。

要件の 1 つは、ルックアップ テーブルからデータを取得するグリッド列の 1 つにドロップダウン コントロールが必要であることです。

MVC3 は比較的新しいので、Razor ビューはモデル ディレクティブ IE を 1 つしか使用できないため、次のように考えました。

@model IEnumerable<MarketingWebsiteTools.Models.EditableItemInfo>

ドロップダウン ルックアップ値は、グリッドのデータとともに ViewModel にマップし直す必要があることを確認してください。

この時点で、次のように ClientTemplate で Html.Telerik().ComboBox() を使用していることに言及することが適切かもしれません。

    .Columns(columns =>
    {
    columns.Bound(o => o.ItemNmbr).Width(65);//.ClientTemplate("<label  name='ProductIdentifier' />");
    columns.Bound(o => o.Description).Width(65)
                .ClientTemplate(Html.Telerik().ComboBox()
                .Name("Special")
                **.BindTo(new SelectList())**
                .ToHtmlString());
    columns.Bound(o => o.Start_Date).Width(75).Format("{0:d}");
    columns.Bound(o => o.End_Date).Width(75).Format("{0:d}");
    columns.Bound(o => o.PromotionText).Width(75);
    columns.Command(commands => commands.Delete()).Width(125).Title("Delete");
    })

私の質問は: BindTo(new SelectList()) に関して、System.Collections.Generic.IEnumerable 型のパラメーターを提供する必要がありますが、ビューモデルからそれを取得する方法がわかりません。そのルックアップデータを別の方法で取得しています...

この例を見ました: http://www.telerik.com/community/forums/aspnet-mvc/combobox/bindto.aspx

ただし、私のコードまたはインテリセンスはモデル IE を認識していないようです: .BindTo(new SelectList(Model.))

この例も見ました: How to insert drop down list box in a Telerik grid

コントローラー内のメソッドへの呼び出しがあるように見えますが、そのコントローラーへのアクセスはありません..

助けてくれてありがとう。

ダグ

4

1 に答える 1

0

Templateを使用すると、非常に簡単に実行できます。Controller からTempDataまたはViewBagを使用してデータをViewに渡します。

@{
    List<AdjustmentReasonCodes> salesAuditReasons = new List<AdjustmentReasonCodes>();
    salesAuditReasons = (List<AdjustmentReasonCodes>)TempData["SalesAuditReason"];
}

column.Template(@<select id="@("ddlSalesAuditReason" + @item.CustCode.Replace(" ", "").Replace("-", "").Trim())" class="DropDown">
                    <option value="0">--Select--</option>
                    @foreach (AdjustmentReasonCodes adrc in salesAuditReasons)
                    {
                        if (item.RefReasonForAuditAdjustment == adrc.ReasonCode)
                        { 
                        <option value="@(adrc.ReasonCode)" selected="selected">@adrc.ReasonDescription</option> 
                        }
                        else
                        {                        
                        <option value="@(adrc.ReasonCode)">@adrc.ReasonDescription</option>
                        }
                    }
                </select>).Title("Audit Reason").Width(135);
于 2012-07-07T05:24:05.090 に答える