Как сделать Datable загрузчик со стороны сервера в vb.net - PullRequest
0 голосов
/ 30 апреля 2018

Я использую композицию из datatable.net

Я видел много примеров en c # ... но мне не удалось перевести на vb.net. Я смотрю с Образец с datatable.net и это на Но у меня есть сообщение об ошибке

Datatables, предупреждающие неверный ответ 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

Я ставлю на моей visualstudio точку останова в начале моего GetInfo, но я не достигаю ее. Если у кого-то есть пример в vb.net, чтобы дать или может помочь мне исправить пантомимы ...

1 Ответ

0 голосов
/ 30 апреля 2018

Я меняю свой код 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: - (

UPDATE

Это хорошо, но для устаревшего режима (прежде чем я забуду aoData в свойстве Data)

Для нормального режима ...

 $('#LBENEF').DataTable({
        "processing": true,
        "serverSide": true,
        "ajax": "/Beneficiaire/ListBeneficiaires.asmx/GetListBenef"
    });

Я забыл, что у меня есть masterPage, и когда вы используете веб-метод в aspx, вы загружаете свой мастер в части своего ответа, прежде чем достигнете веб-метода ... затем необходимо пройти asmx (или ashx ... все, что зависит от главная страница)

ОБНОВЛЕНИЕ 2

Не пытайтесь изменить свой web.config, чтобы позволить методам get в веб-сервисе, например, сказать здесь

<webServices>
        <protocols>
            <add name="HttpGet"/>
        </protocols>
    </webServices>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...