Member 14010375 Ответов: 1

Как я могу передать свои строковые данные в таблицу данных JQUERY?


У меня есть строка, возвращаемая из функции, которая находится в формате JSON.

Ниже приведена структура текста

[{"ID":89,"COMPLAINTTYPE":"Motherboard complaint","CTYPE_ABS":"Motherboardcomplaint"},{"ID":90,"COMPLAINTTYPE":"CMOS batter not working","CTYPE_ABS":"CMOSbatternotworking"},{"ID":91,"COMPLAINTTYPE":"Memory damaged","CTYPE_ABS":"Memorydamaged"},{"ID":92,"COMPLAINTTYPE":"SMPS damaged","CTYPE_ABS":"SMPSdamaged"}]


которая состоит из трех полей и значений из базы данных с идентификатором, COMPLAINTTYPE, CTYPE_ABS

Как я могу использовать это в качестве данных для JQUERY Datatable?
Я новичок в JQUERY. Я хочу заменить Datagrid на JQUERY Datatable
Пожалуйста помогите

Что я уже пробовал:

Я создал форму формата JSON my VB.net функция
Public Function generatetabledata(sqlstr As String) As String
       Dim dt As New DataTable()
       Using con As New SqlConnection(IDvar.Constr)
           Using cmd As New SqlCommand(sqlstr, con)
               Dim jsondata As String
               con.Open()
               Dim da As New SqlDataAdapter(cmd)
               da.Fill(dt)
               Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer()
               Dim rows As New List(Of Dictionary(Of String, Object))()
               Dim row As Dictionary(Of String, Object)
               For Each dr As DataRow In dt.Rows
                   row = New Dictionary(Of String, Object)()
                   For Each col As DataColumn In dt.Columns
                       row.Add(col.ColumnName, dr(col))
                   Next
                   rows.Add(row)
               Next
               jsondata = (serializer.Serialize(rows))
               Return jsondata
               con.Close()
               cmd.Dispose()
               dt.Clear()
           End Using
       End Using
   End Function


Я использовал приведенный ниже код для вызова Datatable

<script>

       $(document).ready(function () {
           $('#datatable-tabletools').DataTable({
               "ajax": {
                   "url": "datacall/GetCata",
                   "dataSrc": "",
                   "data": '<%= Session("ctypedata")%>'
               },
               "columns":  [
               { "data": "ID" },
               { "data": "COMPLAINTTYPE" },
               { "data": "CTYPE_ABS" } ]
           });
       });
       
</script>
     <table class="table table-bordered table-striped mb-none" id="datatable-tabletools" data-swf-path="assets/vendor/jquery-datatables/extras/TableTools/swf/copy_csv_xls_pdf.swf">
    <thead>
        <tr>
       
            <th>ID</th>
            <th>Complaint</th>
            <th>Ctype</th>
             
        </tr>
    </thead>
     
</table>


строка JSON хранится в
Session("ctypedata")

1 Ответов

Рейтинг:
0

Richard Deeming

Аякс.сведения[^] используется для отправки дополнительных данных на сервер - ваш Home/GetGata конечная точка в данном случае. Затем ожидается, что сервер вернет данные для отображения.

Если вы просто хотите указать данные для отображения, не используйте ajax вариант. Либо использовать то data вариант[^], или непосредственно генерировать разметку таблицы.

$(document).ready(function () {
    $('#datatable-tabletools').dataTable({
        "data": <%= Session("ctypedata") %>,
        "columns": [
            { "data": "ID" },
            { "data": "COMPLAINTTYPE" },
            { "data": "CTYPE_ABS" } 
        ]
    });
});


Member 14010375

Привет Ричард,

Спасибо за ваш ответ, я попробовал этот код, но получил ошибку "Datatable не может повторно инициализироваться"

спасибо снова

Richard Deeming

3. предупреждение: невозможно повторно инициализировать DataTable[^]
Похоже, вы пытаетесь инициализировать одну и ту же таблицу несколько раз.

Member 14010375

Привет, Ричард, большое тебе спасибо, Да, ты был прав, поэтому я изменил название стола. Теперь он отлично работает с нижеприведенным кодом


var dataSet = [ &lt;%= Session("cdatatype")%>] ;
$(документ).готово(функция () {
$('#eg1').DataTable({
сведения: набор,
столбцы: [

{ название: "ID" },
{ название: "CTYPE" },
{ название: "CTYPE_ABS" }
]
});
});

Теперь у меня есть проблема: всякий раз, когда сеанс("cdatatype") изменяется с заднего конца, таблица должна перерисовываться. Как я могу это сделать?

Richard Deeming

Что вызывает это изменение?

Вы загружаете его из сеанса, поэтому он может быть изменен только текущим пользователем, что означает, что он, вероятно, знает, когда обновить таблицу.

Member 14010375

Спасибо, Да, все в порядке, я вставляю некоторые данные из бэкенда, и после вставки переменная сеанса снова получит данные, поэтому после вставки мне нужно перерисовать таблицу данных