Bind (pass) c# datatable к jquery datatable вызывает ошибку - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу связать свои данные C# с данными jQuery. Однако появляется всплывающее окно, в котором говорится

Предупреждение DataTables: идентификатор таблицы = extracionTable - Ajax ошибка. Для получения дополнительной информации об этой ошибке см. http://datatables.net/tn/7

, а в таблице указано «Загрузка ...», но ничего не происходит. Я не понимаю, почему это так.

Вот мой контроллер.

public JsonResult loadExtraccionTable(string table_name)
{
    table_name = "ext_clientes";
    MetaViewContext metaViewContext = new MetaViewContext();
    return Json(new { data = metaViewContext.GetMetaView(table_name).table.AsEnumerable().ToList() }, JsonRequestBehavior.AllowGet);
}

Эта часть кода возвращает Datatable

 metaViewContext.GetMetaView(table_name).table

Я добавил .AsEnumerable().ToList(), потому что я думал, что это будет иметь значение

Вот как я сделать мой c# датированный

public DataTable simpleExportQuery(string p_table)
{

    string selectStatement = "select * from " + p_table;
    DataTable dt = new DataTable();
    using (MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(connString))
    {
        conn.Open();
        using (MySqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = selectStatement;
            using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
            {
                sda.Fill(dt);
            }
        }
    }

    return dt;
}

Вот мой сценарий

<script>
$(document).ready(function () {
    var table = $('#extracionTable').DataTable({
        "ajax": {
        "url": "/extraccion/loadExtraccionTable",
        "type": "GET",
        "datatype": "json",
        },
        rowReorder: {
            selector: 'td:nth-child(2)'
        },
        responsive: true,
        dom: 'Bfrtip',
        buttons: [
            'copyHtml5',
            'excelHtml5',
            'csvHtml5',
            'pdfHtml5'
        ],
        "deferRender": true,
        "columns": [
            @foreach (var item in Model.lstColumns)
            {
                <text>
                    { "data":"@(item.columnName)", "autoWidth": true },
                </text>
             }
        ],
    });
});
</script>

Вот что я предполагаю, что мой json выглядит как

[
   {
      "cliente_id":2,
      "nombre_cliente":"my name",
      "direccion":"some adresss",
      "cuidad":"city",
      "departamento":"agricolture",
      "codigo_postal":"444444",
      "pais_nombre":"Colombia",
      "correo_facturacion_electronica":"True",
      "DANE":3,
      "digito_verificacion":4444,
      "NIT":3,
      "plazo_pago":0,
      "comercial_asignado":"some name",
      "con_potencial":1,
      "confirmado":1,
      "eliminado":0,
      "fecha_creacion":"2017-12-22T00:00:00",
      "visitado":1,
      "activo":1,
      "comentario":"Some comment",
      "contacto_id":15,
      "nombre_contacto":"somename",
      "apellido_contacto":"name",
      "carga_contacto":"Sales",
      "correo_contacto":"cliente@email.ca",
      "telefono_fijo_contacto":"444444444",
      "telefono_movil_contacto":"444444444",
      "principal_contacto":1,
      "contacto_eliminado":false
   }
]

Также возможно это полезно, я также нашел эту ошибку в chrome "Обнаружена циклическая ссылка при сериализации объекта типа 'System.Reflection.RuntimeModule'"

Любая помощь будет очень признательна, спасибо.

...