2012-10-02 63 views
0

根据下拉列表的结果,我想显示一个网格。我似乎无法将值发送给select(“controller”,“action”,data)方法。我怎样才能做到这一点?我无法让我的JavaScript来处理它。将网格绑定到下拉列表

这是下拉列表

    <select id="workoutType" onchange="changed(value)"> 
        @{ foreach (var type in Model.WorkoutTypes) 
         { 
         <option value="@type"> @type </option> 
         } 
        } 
        </select> 

,这里是电网

     @(Html.Telerik().Grid(Model.Approvers) 
          .Name("Orders") 
          .DataBinding(dataBinding => dataBinding 
           //Ajax binding 
            .Ajax() 
           //The action method which will return JSON 
             .Select("__AjaxBinding", "AssetResearch", new { workoutType = ViewData["dropDownValue"] }) 
          ) 
          .Columns(columns => 
           { 
            columns.Bound(o => o.InvestorName).Width(125); 
            columns.Bound(o => o.ApproverType).Title("Type").Width(100); 
            columns.Bound(o => o.Email).Title("E-mail Address"); 
           }) 
          .ClientEvents(events => events 
           .OnDataBinding("onDataBinding") 
           ) 
          .Pageable() 
          .Sortable() 
        )  

我尝试使用Viewbag和可悲的是,我似乎无法把它关闭。

回答

0

这不是去实现它,因为RouteValue不能在服务器上进行设置(当您呈现电网)

一种方法来实现它的正确方法是使用下拉列表的变化事件,Phonixblade9提到使网格执行请求并从服务器获取其数据。这可以通过Grid的ajaxRequest方法来实现。

这里是我的意思是:

$(document).ready(function() { 
    $('#workoutType').change(function(){ 

     var data = $(this).value; 

     var gridClientObject = $('#Orders').data().tGrid; 
     gridClientObject.ajaxRequest({workoutType :data});// do not forget to name the parameter in the action again method again 'workoutType' 
    }); 
}); 
1
$(document).ready(function() { 
    $('#workoutType').change(function(){ 
    //bind your data here 
    var data = $(this).value; 
    // pass into your C# stuff here 
    }); 
}); 

会是这样的工作?