控制器返回值但未显示在 ASP.NET Core 的 JqGrid 中

Posted

技术标签:

【中文标题】控制器返回值但未显示在 ASP.NET Core 的 JqGrid 中【英文标题】:Controller return values but not show in JqGrid in ASP.NET Core 【发布时间】:2021-05-19 01:18:47 【问题描述】:

我正在使用 jqgrid,控制器返回值列表,但值未显示在 jqgrid 上。行创建按钮 groupid,名称未显示。我也正确使用断点控制器返回数据表,但未在 jqgrid 上显示。 我还附上了screenshort你可以看到实际的结果。

控制器

public JsonResult mfollowsummary(int id)

    using (objSqlCon = new SqlConnection(conn))
    
        SqlCommand cmd = new SqlCommand("select Group_Id,Group_Name from Groups where Comp_Id=" + 1 + "", objSqlCon);
        cmd.CommandType = CommandType.Text;

        SqlDataAdapter sd = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
               
        objSqlCon.Open();
        sd.Fill(dt);
        objSqlCon.Close();
        string JSONString = JsonConvert.SerializeObject(dt);
        var people = JsonConvert.DeserializeObject<List<Groups>>(JSONString);

        return Json(people);
    

短片 Return Result of function

Jqgrid 链接

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jquery-ui.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.5/css/ui.jqgrid.min.css">

<script src="https://cdnjs.cloudflare.com/ajax/libs/free-jqgrid/4.15.5/jquery.jqgrid.min.js"></script>

Javascript

<script type="text/javascript">

    jQuery(document).ready(function ($) 
        var $grid = $("#jqGrid");

        $grid.jqGrid(
            url: '@Url.Action("mfollowsummary")',
            datatype: 'json',
            postData: 
            ,
            jsonReader:  id: 'Group_Id' ,
            colModel: [
                 name: 'GroupId', width: 20, hidden: false, editable: true, editable: "disabled" ,
                 name: 'GroupName', width: 200, frozen: true, editable: true, searchoptions:  sopt: ['cn']  ,

            ],
            loadonce: true,
            navOptions: 
                reloadGridOptions:  fromServer: true 
            ,
            formEditing: 

                closeOnEscape: true,
                closeAfterEdit: true,
                savekey: [true, 13],
                reloadGridOptions: 

                    fromServer: true
                
            ,
            forceClientSorting: true,
            viewrecords: true,

            autowidth: true,
            shrinkToFit:true,
            height: 350,
            rowNum: 100,
            rowList: [10, 20, 30, 50, 100, 500],
            pager: "#jqGridPager",
         
            rownumbers: true,
            sortname: 'Group_Name',
            sortorder: 'Group_Name',
     

            loadComplete: function () 
                //$("tr.jqgrow:odd").css("background", "#f0f8ff");

            ,
        );


        $("#jqGrid").jqGrid("setFrozenColumns");
    );


</script>

结果截图 Return Function Result

HTML

 <div class="table-responsive">
       <table id="jqGrid" class="table"></table>
 </div>
 <div id="jqGridPager"></div>

【问题讨论】:

【参考方案1】:

您只设置了 id,但没有设置名称。您的 colModel 名称不尊重返回的数据。尝试使用以下 colModel。

        colModel: [
             name: 'Group_Id', width: 20, hidden: false, editable: true, editable: "disabled" ,
             name: 'Group_Name', width: 200, frozen: true, editable: true, searchoptions:  sopt: ['cn']  ,

        ],

注意名称Group_IdGroup_Name,对应于您从服务器返回的内容。

JSON 响应 JSON Response screenshort

【讨论】:

我用了这行代码,但问题还是一样。 能否请您从服务器发布您的回复?为此目的使用调试控制台。 这是我调试时的结果,我还在控制器部分下方发布了结果图像 001 会员帐户 002 供应商 003 企业社会责任 004 员工 005 代理人 我的意思是在浏览器控制台中看到的结果。网格在哪里按 Ctrl+Shit + J 并查看来自服务器的 JSON 响应。那是重要的部分。见here 你好@TonyTomov 我已经在浏览器控制台中附上了json响应的截图。

以上是关于控制器返回值但未显示在 ASP.NET Core 的 JqGrid 中的主要内容,如果未能解决你的问题,请参考以下文章

Asp.Net Core 3.1 数据被检索但未保存到数据库中

ASP.NET Core 中的 dotnet-trace 不显示控制器的任何方法

如何在 ASP.NET Core 控制器中返回自定义 HTTP 响应?

ng-reflect-model 显示正确的值但未反映在输入中

为啥我的未经授权的控制器不返回 401 ASP.Net Core?

如何使用 ASP.NET Core 显示错误