提问人:YannickIngenierie 提问时间:4/30/2018 最后编辑:CommunityYannickIngenierie 更新时间:5/2/2018 访问量:1147
如何在 vb.net 中与服务器端一起制作可访问的引导程序
How make a datable bootstrap with server side in vb.net
问:
我使用 datatable.net 的 compoment
我看到了很多 en c# 示例......但我没有成功翻译成 vb.net。 我从 datatable.net 的样本中查看,但我有错误消息说
数据表警告 json 响应无效...
我的 aspx 页
<asp:Content ID="Content2" ContentPlaceHolderID="CPLContent" runat="Server">
<div class="container-fluid">
<div class="row">
<div class="panel panel-default " id="panBeneficiaireListe" runat="server">
<div class="panel-heading">
<h3 class="panel-title">Bénéficiaires</h3>
<ul class="list-inline panel-actions">
<li><a href="#" id="panel-fullscreen" role="button" title="Toggle fullscreen"><i class="glyphicon glyphicon-resize-full panel-fullscreen-button"></i></a></li>
</ul>
</div>
<div class="panel-body">
<table class="table" id="LBENEF">
<thead>
<tr>
<td></td>
<td>Actif</td>
<td>Type</td>
<td>Identifiant</td>
<td>Nom</td>
<td>Site</td>
<td>Perimètre</td>
<td class="col40px"></td>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
<script>
$('#LBENEF').DataTable({
stateSave: true,
bServerSide: true,
bProcessing: true,
sAjaxSource: document.location.pathname + '/GetInfo'
});
</script>
</asp:Content>
还有我的aspx.vb
Imports System.Web.Script.Serialization
Imports System.Web.Script.Services
Imports System.Web.Services
Imports WPM_DATA.V15.SecuriteQueries
Partial Class Beneficiaire_List
Inherits pageBase
<WebMethod(EnableSession:=True)>
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)>
Public Shared Function GetInfo() As String
Dim echo = Integer.Parse(HttpContext.Current.Request.Params("sEcho"))
Dim displayLength = Integer.Parse(HttpContext.Current.Request.Params("iDisplayLength"))
Dim displayStart = Integer.Parse(HttpContext.Current.Request.Params("iDisplayStart"))
Dim search As String = HttpContext.Current.Request.Params("sSearch")
Dim datacontext As New WPM15_Entities
Dim userQuery As New ConnectedUserQueries(datacontext)
Dim records = userQuery.BeneficiairesAffectes()
If (Not records.Any()) Then
Return String.Empty
Else
Dim itemsToSkip As Integer = If(displayStart = 0, 0, displayStart + 1)
Dim pagedResults = records.Skip(itemsToSkip).Take(displayLength).ToList()
Dim result = New With {
Key .iTotalRecords = records.Count,
Key .iTotalDisplayRecords = records.Count,
Key .aaData = pagedResults
}
Dim js As New JavaScriptSerializer()
Return js.Serialize(result)
End If
End Function
End Class
我在 GetInfo 的开头放置了一个断点,但我没有达到它。 如果有人在 vb.net 中举例,或者可以帮助我纠正哑剧......
答:
0赞
YannickIngenierie
4/30/2018
#1
我更改了我的js代码
$('#LBENEF').DataTable({
stateSave: true,
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/Beneficiaire/list.aspx/GetInfo",
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"type": "GET",
"url": sSource,
"data": aoData,
"success": function (msg) {
var json = jQuery.parseJSON(msg.d);
fnCallback(json);
$("#tblData").show();
},
error: function (xhr, textStatus, error) {
if (typeof console == "object") {
console.log(xhr.status + "," + xhr.responseText + "," + textStatus + "," + error);
}
}
});
},
fnDrawCallback: function () {
//$('.image-details').bind("click", showDetails);
}
});
我在 vb 中忘记了“UseHttpGet:=True”而不是 UseHttpGet:=False :-(
更新
这很好,但对于传统模式(在我忘记数据属性中的 aoData 之前)
对于正常模式...
$('#LBENEF').DataTable({
"processing": true,
"serverSide": true,
"ajax": "/Beneficiaire/ListBeneficiaires.asmx/GetListBenef"
});
我忘了我有一个masterPage,当你在aspx中使用web方法时,你在到达你的webmethod之前加载了你的master的一部分响应......然后需要通过 ASMX(或 AshX...任何依赖于母版页的内容)
更新 2
不要像这里这样改变你的 web.config 让 get 方法在 webservice 中
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
评论