[javascript]如何实例化 DataTable 对象
· 收录于 2024-01-06 16:53:07 · source URL
问题详情
我正在 asp.net 创建一个 Web 应用程序,该应用程序运行查询并使用接收到的数据实例化数据表对象并在屏幕上显示数据。
这是我的后端:
[WebMethod]
public static string GetDataForDataTable(int draw, int start, int length)
{
OleDbConnection OLEConnectionSPHERA = new OleDbConnection();
OLEConnectionSPHERA = Common.openConnOLEADODB(OLEConnectionSPHERA);
string s_odlQuery = $"SELECT CODODL, FLAGAPERTO, DATAINIZIO, ORAINIZIO, PROGRESSIVO, DATAFINE, ORAFINE, DURATA, CODCDL, TURNO FROM S_ODL ORDER BY PROGRESSIVO OFFSET {start} ROWS FETCH NEXT {length} ROWS ONLY";
OleDbDataReader s_odlRD = Common.executeQuery(s_odlQuery, OLEConnectionSPHERA);
List<Oggetto> dati = new List<Oggetto>();
int numRecord = 0;
while (s_odlRD.Read())
{
numRecord++;
try
{
Oggetto obj = new Oggetto();
obj.cododl = s_odlRD.GetValue(s_odlRD.GetOrdinal("CODODL")).ToString();
obj.flagaperto = s_odlRD.GetValue(s_odlRD.GetOrdinal("FLAGAPERTO")).ToString();
obj.datainizio = s_odlRD.GetValue(s_odlRD.GetOrdinal("DATAINIZIO")).ToString();
obj.orainizio = s_odlRD.GetValue(s_odlRD.GetOrdinal("ORAINIZIO")).ToString();
obj.progressivo = s_odlRD.GetValue(s_odlRD.GetOrdinal("PROGRESSIVO")).ToString();
obj.datafine = s_odlRD.GetValue(s_odlRD.GetOrdinal("DATAFINE")).ToString();
obj.orafine = s_odlRD.GetValue(s_odlRD.GetOrdinal("ORAFINE")).ToString();
obj.durata = s_odlRD.GetValue(s_odlRD.GetOrdinal("DURATA")).ToString();
obj.codcdl = s_odlRD.GetValue(s_odlRD.GetOrdinal("CODCDL")).ToString();
obj.turno = s_odlRD.GetValue(s_odlRD.GetOrdinal("TURNO")).ToString();
dati.Add(obj);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex);
}
}
Common.closeConnOLEADODB(OLEConnectionSPHERA);
var result = new
{
draw = draw,
recordsTotal = numRecord, // Implementa questo metodo per ottenere il totale dei record
recordsFiltered = numRecord, // Implementa questo metodo per ottenere il totale dei record dopo il filtraggio (se applicato)
data = dati
};
return JsonConvert.SerializeObject(result);
}
这是我的前端:
<body>
<form id="form1" runat="server">
<div class="table-responsive">
<table id="example" style="width:100%" class="display">
<thead>
<tr>
<th>CODODL</th>
<th>FLAGAPERTO</th>
<th>DATAINIZIO</th>
<th>ORAINIZIO</th>
<th>PROGRESSIVO</th>
<th>DATAFINE</th>
<th>ORAFINE</th>
<th>DURATA</th>
<th>CODCDL</th>
<th>TURNO</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</form>
<script>
$(function () {
var pageUrl = '<%=ResolveUrl("~/Sph_table_00.aspx/GetDataForDataTable")%>';
var dataTable;
dataTable = $('#example').DataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": pageUrl,
"type": "POST",
"contentType": "application/json; charset=utf-8",
"dataType": "json",
"data": function (d) {
console.log(d);
return JSON.stringify(d);
}
},
"columns": [
{ data: 'cododl', name: 'CODODL' },
{ data: 'flagaperto', name: 'FLAGAPERTO' },
{ data: 'datainizio', name: 'DATAINIZIO' },
{ data: 'orainizio', name: 'ORAINIZIO' },
{ data: 'progressivo', name: 'PROGRESSIVO' },
{ data: 'datafine', name: 'DATAFINE' },
{ data: 'orafine', name: 'ORAFINE' },
{ data: 'durata', name: 'DURATA' },
{ data: 'codcdl', name: 'CODCDL' },
{ data: 'turno', name: 'TURNO' }
]
});
}
</script>
</body>
下面的代码获取数据并设置数据表属性,例如 draw、data 和 recordsTotal。问题在于,即使数据正确到达,表也没有被填满。
最佳回答
暂无回答