2012-04-27 74 views
0

我有一个ASP.NET MVC3视图,该视图具有使用视图模型作为其数据的Telerik Grid。将Telerik组合框插入到Telerik ASP.Net MVC3 Grid中

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

作为比较新的MVC3,我想,既然Razor视图只能使用一个模型的指令IE:

@model IEnumerable<MarketingWebsiteTools.Models.EditableItemInfo> 

的下拉菜单查找valueswould需要与数据一起被映射回视图模型网格。

在这一点上它可能是有关一提的是我使用Html.Telerik()组合框()在ClientTemplate这样的:。

.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(新的SelectList()),我需要提供System.Collections.Generic.IEnumerable类型的参数,但是我不确定如何从我的viewmodel中获取该参数,或者我应该以另一种方式获取该查找数据...

我看着这个例子: http://www.telerik.com/community/forums/aspnet-mvc/combobox/bindto.aspx

然而,我的代码或智能感知似乎并没有被承认的任何模型即: .BindTo(新的SelectList(型号)。)

我也看了下面这个例子: How to insert drop down list box in a Telerik grid

它看起来就像有一个调用方法在控制器,但再次,没有访问该控制器..

在此先感谢您的任何帮助。

道格

回答

0

可以使用模板做到这一点很容易。从控制器只使用一个TempData的ViewBag将数据传递到查看

@{ 
    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);