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,但遗憾的是我似乎无法成功。

4

2 回答 2

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

像这样的东西会起作用吗?

于 2012-10-02T22:10:34.760 回答
0

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

实现它的一种方法是使用Phonixblade9 提到的DropDOwnList 的更改事件来使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'
    });
});
于 2012-10-04T20:20:38.543 回答