0

我有一个 ASP.NET MVC3 视图,它有一个 Telerik Grid,它使用 viewmodel 的数据。

要求之一是我们需要在从查找表中获取数据的网格列之一中的下拉控件。

对于 MVC3 来说相对较新,我认为由于 Razor 视图只能使用一个模型指令 IE:

@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.))

我还看了这个例子: 如何在 Telerik 网格中插入下拉列表框

看起来在控制器中有对方法的调用,但同样,无法访问该控制器..

提前感谢您的帮助。

道格

4

1 回答 1

0

您可以使用Template轻松完成。从 Controller 仅使用TempDataViewBag将数据传递给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 回答