将网格绑定到下拉列表

时间:2012-10-02 21:12:22

标签: telerik telerik-grid telerik-mvc

我想要显示一个网格,具体取决于下拉列表的结果。我似乎无法将值发送到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,遗憾的是我似乎无法将其拉下来。

2 个答案:

答案 0 :(得分:1)

$(document).ready(function() {
    $('#workoutType').change(function(){
    //bind your data here
    var data = $(this).value;
    // pass into your C# stuff here
    });
});

这样的事情会起作用吗?

答案 1 :(得分:0)

这不是实现它的正确方法,因为无法在服务器上设置RouteValue(当您渲染网格时)

实现它的一种方法是使用Phonixblade9提到的DropDOwnList的change事件来使Grid执行请求并从服务器获取其数据。这可以通过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'
    });
});