我在那里有一个webgrid我试图绑定IDictionary。我第一次绑定没有任何问题。我第二次面临困难。我在模型中得到结果,第二次没有刷新网格内容。尝试通过下拉值更改填充网格数据。我第一次在菜单上点击加载。
这是我的控制器代码。在结果中我有值列表。我在第二次ajax调用后面临在webgrid中绑定它的问题。
public List<IDictionary> GetHotelingList(int floorId)
{
var model = new List<IDictionary>();
using (var context = new FloorContext())
{
try
{
model = ListHotelingByFloorId(context, floorId);
}
catch (Exception ex)
{
}
}
return model;
}
这是我的ajax电话
$("#floor").bind("change", function () {
var facilityId = parseInt($("#FacilityDropDown option:selected").val());
var floorId = parseInt($("#floor option:selected").val());
$.ajax({
type: 'POST',
url: '/Floor/GetHotelingList',
cache: false,
data: { floorId: floorId },
success: function (data) {
},
complete: function () {
},
error: function () {
if (facilityName.indexOf('-') != -1) {
$('#floor').empty();
return;
}
else
alert("error in generating floor");
}
});
});
网格中绑定的代码。
@using System.Dynamic
@model List<System.Collections.IDictionary>
@{
var result = new List<dynamic>();
foreach (var emprow in Model)
{
var row = (IDictionary<string, object>)new ExpandoObject();
var eachEmpRow = (Dictionary<string, object>)emprow;
foreach (KeyValuePair<string, object> keyValuePair in eachEmpRow)
{
row.Add(keyValuePair);
}
result.Add(row);
}
var grid = new WebGrid(result, rowsPerPage: 50, ajaxUpdateContainerId: "grdHoteling");
}
请帮忙吗?
提前致谢
答案 0 :(得分:1)
你必须在主视图中创建一个容器div,从那里调用ajax并在该div中加载结果:
<div id="GridContainer">
// load you view first time here
</div>
并在ajax调用中更新了此div的内容,成功回调了ajax:
success: function (data) {
$("#GridContainer").html(data);
}