加载MVC webgrid内容第二次无法正常工作

时间:2014-08-19 05:58:51

标签: c# asp.net-mvc

我在那里有一个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");
}

请帮忙吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

你必须在主视图中创建一个容器div,从那里调用ajax并在该div中加载结果:

<div id="GridContainer">
// load you view first time here
</div>

并在ajax调用中更新了此div的内容,成功回调了ajax:

 success: function (data) {
                 $("#GridContainer").html(data);
                }