我想要显示一个网格,具体取决于下拉列表的结果。我似乎无法将值发送到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 :(得分: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'
});
});