【问题标题】:Asp.Net MVC jqgrid is not displaying my dataAsp.Net MVC jqgrid 不显示我的数据
【发布时间】:2018-12-24 03:08:25
【问题描述】:

我正在尝试填充 jqgrid。网格已渲染,但未显示任何数据。我知道我的控制器(通过标准 ajax 函数调用)正在工作。它返回我期望的数据。

我如何验证 jqgrid 返回相同的数据以及我做错了什么导致数据无法显示?

jqgrid:

<script type="text/javascript">
   jQuery(document).ready(function() {
        $.ajaxSetup({ cache: false });
        var rvtoken = $("input[name='__RequestVerificationToken']").val();
        var ModuleId = @Dnn.ModuleContext.ModuleId;
        var TabId = @Dnn.ModuleContext.TabId;
        $('#grid').jqGrid({
            url: '/DesktopModules/MVC/CW.GridTest/Item/getArtists2',
            datatype: 'json',
            mtype: 'POST',
            contentType: 'application/json',
            loadBeforeSend: function(jqXHR) {
                jqXHR.setRequestHeader('ModuleId', ModuleId);
                jqXHR.setRequestHeader( 'TabId', TabId);
                jqXHR.setRequestHeader('RequestVerificationToken', rvtoken);
            },
            colNames: ['ArtistID', 'ArtistName', 'City'],
            colModel: [
                { name: 'ArtistID', index: 'ArtistID', width: 80, align: 'left', editable: false },
                { name: 'Name', index: 'ArtistName', width: 120, align: 'left', editable: true },
                { name: 'Location', index: 'City',width: 60,align: 'left',editable: true}
            ],
            loadError: function (jqXHR, textStatus, errorThrown) {
                alert('HTTP status code: ' + jqXHR.status + '\n' +
                    'textStatus: ' + textStatus + '\n' +
                    'errorThrown: ' + errorThrown);
                alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText);
            },
            loadOnce: true,
            autoencode: true,
            height: '100%',  
            rowNum: 10,    
            emptyrecords: 'No records',  
            sortname: 'ArtistID',
            sortorder: 'desc',
            viewrecords: true,
            caption: 'Artists',
            width: 300,
            gridview: true,
            jsonReader:
                {
                    total: 'total',
                    page: 'page',
                    records: 'records',
                    root: 'rows',
                    repeatitems: false,
                    id: 'ArtistID'
                } 
        });
       jQuery("#grid").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false });
    });
</script>


<div>
    <table id="grid"></table>
    <div id="pager"></div>
</div>

从标准 ajax 返回的数据:

    {  
       "total":100,
       "page":99,
       "records":6,
       "rows":"[
{\"ArtistID\":1,\"ArtistName\":\"Clayton Knight\",\"City\":\"Tigard\"},
{\"ArtistID\":2,\"ArtistName\":\"Corral Creek Bluegrass\",\"City\":\"Sherwood\"},
{\"ArtistID\":3,\"ArtistName\":\"Never Strangers Band\",\"City\":\"Portland\"},
{\"ArtistID\":5,\"ArtistName\":\"The Hillwilliams\",\"City\":\"Tigard\"},
{\"ArtistID\":7,\"ArtistName\":\"Bobo and the Bobbettes\",\"City\":\"Ellensburg\"},
{\"ArtistID\":27,\"ArtistName\":\"Bobo 5\",\"City\":\"Ellensburg\"}
]"
}

【问题讨论】:

    标签: asp.net json ajax model-view-controller jqgrid


    【解决方案1】:

    这是我的控制器。并不是说它不起作用,而是它没有返回我认为应该的样子。我正在反序列化“行”元素的数据表,然后再次反序列化整个元素。因此,控制器没有返回 jqgrid 可以实际使用的 json 字符串。

    现在一切正常……

    public String getArtists2()
            {
                using (var ac = new ArtistListingController())
                {
                    ac.Gets();
                    ac.LoadDatatable();
                    DataView view = new DataView(ac.Datatable);
                    DataTable dt = view.ToTable(false, "ArtistID", "ArtistName", "City");
                    var jsonData = new
                    {
                        page=1,
                        total = 1, //  (ac.RecordCount + rows - 1) / rows,
                        records = ac.RecordCount,
                        rows = dt //JsonConvert.SerializeObject(dt)
                    };
                    return JsonConvert.SerializeObject(jsonData);
                }
            }
    

    返回:

    {  
       "page":1,
       "total":1,
       "records":6,
       "rows":[  
          {  
             "ArtistID":1,
             "ArtistName":"Clayton Knight",
             "City":"Tigard"
          },
          {  
             "ArtistID":2,
             "ArtistName":"Corral Creek Bluegrass",
             "City":"Sherwood"
          },
          {  
             "ArtistID":3,
             "ArtistName":"Never Strangers Band",
             "City":"Portland"
          },
          {  
             "ArtistID":5,
             "ArtistName":"The Hillwilliams",
             "City":"Tigard"
          },
          {  
             "ArtistID":7,
             "ArtistName":"Bobo and the Bobbettes",
             "City":"Ellensburg"
          },
          {  
             "ArtistID":27,
             "ArtistName":"Bobo 5",
             "City":"Ellensburg"
          }
       ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多