【问题标题】:How to load datareader data then return json for ajax datatable如何加载datareader数据然后为ajax数据表返回json
【发布时间】:2020-02-24 08:11:56
【问题描述】:

此代码用于加载数据成员

public ActionResult LoadData()
{
    string query = "SELECT NAME, DATELASTUSE, CREATE_ID FROM MEMBER";

    using (OdbcConnection c = new OdbcConnection(Connection.Conn()))
    {
        OdbcCommand cmd = new OdbcCommand(query, c);
        c.Open();

        OdbcDataReader dr = cmd.ExecuteReader();

        var dataTable = new DataTable();
        dataTable.Load(dr);

        return **json for ajax** ;
    }
}


$(document).ready(function () {
    var oTable = $("#PassTable").DataTable({            
    "ajax": {
            "url": "/Home/LoadData",
            "type": "GET",
            "datatype": "json"
            },
            "columns": [
                { "data": "NAME", "autowidth": true },
                { "data": "DATELASTUSE", "autowidth": true },
                { "data": "CREATED_ID", "autowidth": true },
            ],
            "language": {
                "emptytable": "No data found, Please click on <b>Add New</b> button"
            }
        });
    });

<table id="PassTable" class="table table-border table-hover" style="background-color:white;" width="100%">
    <thead>
        <tr>               
            <th>Name</th>
            <th>Date</th>
            <th>Created_By</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

LoadData 来自 HomeController

我不知道如何将datareader返回到json。

我不明白流程只是尝试错误使用-> return Json(new { data = dataTable }, JsonRequestBehavior.AllowGet);

但是 Gv me 错误。

请帮忙。

谢谢。

【问题讨论】:

    标签: c# json datatable odbc asp.net-ajax


    【解决方案1】:

    你的操作方法应该是这样的

            public ActionResult LoadData()
            {
                string query = "SELECT LastName,FirstName,PhoneNumber,Skype,Email,City FROM Contacts;;
    
                using (OdbcConnection c = new OdbcConnection(Connection.Conn()))
                {
                    OdbcCommand cmd = new OdbcCommand(query, c);
                    c.Open();
    
                    OdbcDataReader dr = cmd.ExecuteReader();
    
                    var dataTable = new DataTable();
                    dataTable.Load(dr);
    
                    var lst = dataTable.AsEnumerable()
                            .Select(r => r.Table.Columns.Cast<DataColumn>()
                                    .Select(c => new KeyValuePair<string, object>(c.ColumnName, r[c.Ordinal])
                                   ).ToDictionary(z => z.Key, z => z.Value)
                            ).ToList();
                    return Json(lst, JsonRequestBehavior.AllowGet);
                }
            }
    

    我从https://stackoverflow.com/a/30899867/3816470 那里得到了这个解决方案。

    我对 Ajax Datable 了解不多,因此我不会在这方面提供任何帮助。

    【讨论】:

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