4

asp.net Web サービスからデータを取得しましたが、そのデータを (Web サービスから直接 JSON 形式で) DataTables オブジェクトに渡す方法があるかどうか疑問に思っていました。私は次のようなことをしたいと思います:

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "http://localhost/WebService/GetData",
    } );
} );
4

6 に答える 6

6

はい、できます。これはどういう意味ですか?... サーバーにデータを渡しますか?

$(document).ready(function() {
    $('#example').dataTable( {
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": "../examples_support/server_processing.php",
        "fnServerData": function ( sSource, aoData, fnCallback ) {
            /* Add some extra data to the sender */
            aoData.push( { "name": "more_data", "value": "my_value" } ); // this line will give additional data to the server...
            $.getJSON( sSource, aoData, function (json) { 
                /* Do whatever additional processing you want on the callback, then tell DataTables */
                fnCallback(json)
            } );
        }
    } );
} );
于 2010-01-25T17:54:10.483 に答える
4

ここでは、ASP.NET MVC での DataTables の使用に関する記事を 1 つ見つけることができます。 jQuery DataTables と ASP.NET MVC の統合.

これがあなたを助けることを願っています。あなたを助けることができるものはほとんどありません(DataTablesパラメーターにアクセスするためのモデルクラスとJSONへの直接シリアル化のためのクラス)。コードが少しきれいになります。

よろしく

于 2011-02-27T09:50:17.383 に答える
1

私は今これに取り組んでいます。私はASP.Net MVC 2 Webアプリケーションを使用しており、dataTablesを宗教的に使用しており、各テーブルに1000を超えるレコードを表示する必要があります。サーバー側の処理は、私にとって最適な方法でした。これが私たちが持っているものです。

ビュー (/Admin/Unassigned) での宣言は次のとおりです。

<script type="text/javascript" charset="utf-8">
    $(document).ready(function() {
    $('#adminUnassignedTable').dataTable({
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": "/Admin/UnassignedTable"
        });
    });
</script>

これがコントローラー関数です (/Admin/UnassignedTable)。

public void UnassignedTable()
{
    statusID = (int)PTA.Helpers.Constants.Queue;
    locationID = (int)PTA.Helpers.Constants.Reviewer;
    _AdminList = PTA.Models.IPBRepository.GetIPBsByStatus(Convert.ToInt32(statusID), Convert.ToInt32(locationID)); //_AdminList is an IEnumerable<IPB>, IPB being our class
    IEnumerable<IPB> _NewList;
    int nDisplayStart = Convert.ToInt32(HttpContext.Request.QueryString.Get("iDisplayStart");
    int nDisplayLength = Convert.ToInt32(HttpContext.Request.QueryString.Get("iDisplayLength");
    _NewList = _AdminList.Skip<IPB>(nDisplayStart).Take<IPB>(nDisplayLength).ToList<IPB>();
    string strOutput = "{";
    strOutput += "\"sEcho\":" + HttpContext.Request.QueryString.Get("sEcho") + ", ";
    strOutput += "\"iTotalRecords\":" + _AdminList.Count().ToString() + ", ";
    strOutput += "\"iTotalDisplayRecords\":" + _AdminList.Count().ToString() + ", ";
    strOutput += "\"aaData\":[";
    foreach (IPB ipb in _NewList)
    {
        strOutput += "[ ";
        strOutput += "\"" + ipb.IPBName + "\",";
        strOutput += "\"" + ipb.PubDate + "\",";
        strOutput += "\"" + ipb.Change + "\",";
        strOutput += "\"" + ipb.ChangeDate + "\",";
        strOutput += "\"" + ipb.TotalParts + "\",";
        strOutput += "\"" + ipb.TotalPartsReports + "\",";
        strOutput += "\"" + ipb.ALC + "\",";
        strOutput += "\"" + ipb.DateAdded + "\",";
        strOutput += "\"" + "" + "\","; //Need to add drop down control, that's why it's blank.
        strOutput += "\"" + "" + "\","; //Need to add drop down control, that's why it's blank.
        strOutput += "\"" + "" + "\","; //Need to add drop down control, that's why it's blank.
        strOutput += "\"" + "" + "\""; //Need to add drop down control, that's why it's blank.
        strOutput += "]";
        if (ipb != _NewList.Last())
        {
            strOutput += ", ";
        }
    }
    strOutput += "]}";
    Response.Write(strOutput);
}

ノート!!!!!!!コントロールを追加するときは、バックスラッシュが JSON データに含まれている必要があるため、コントロール値の引用符を \\" のように配置する必要があります。

うまくいけば、コントローラーで Web サービスにアクセスできます。私は Web プログラミングにあまり詳しくないので、何をする必要があるのか​​わかりません。これだけで助かると思いました。

于 2010-08-13T13:35:14.253 に答える
0

Web サービスが DataTables API 規則を満たしている場合に可能です。http://datatables.net/usage/server-sideをご覧ください


アップデート

ASP.NET MVC アプリケーションで DataTables AjaxSource を必要な方法で使用しました - 初期化ルーチンで指定します。ただし、私のサーバー側は、DataTables が通信できるように特別に設計されていました。

于 2010-01-25T18:00:18.113 に答える
0

はい。

Datatables データを正しい形式で格納するオブジェクトを作成します。私は構造を使用しました:

Public Structure DatatablesObject
    Public sEcho As Integer
    Public iTotalRecords As Integer
    Public iTotalDisplayRecords As Integer
    Public aaData As List(Of List(Of String))
End Structure

このために実際に独自のシリアライザーを作成しましたが、コンセプトは同じです。データ ソースをループしてオブジェクトに入力し、シリアル化して応答します。

Dim ser As New JavascriptSerializer
Dim obj As New DatatablesObject With {.sEcho = {Passed In}, .iTotalRecords = {Passed In}, .iTotalDisplayRecords = {Passed In}}
            Dim container As New List(Of List(Of String))
            If value IsNot Nothing Then
                For Each dr As DataRow In value.Rows
                    Dim list As New List(Of String)
                        For Each dc As DataColumn In dr.Table.Columns
                            list.Add(If(dr(dc.ColumnName) Is DBNull.Value, String.Empty, "" & dr(dc.ColumnName) & ""))
                        Next
                    container.Add(list)
                Next
            End If
            obj.aaData = container
            Response.Cache.SetCacheability(HttpCacheability.NoCache)
            Response.ContentType = "application/json"
            Response.Write(ser.Serialize(obj))

これは、必要な正確な形式にシリアル化する必要があります。特定の順序でデータを追加する必要がある場合は、ループを変更する必要があります。{Passed In} は、関数に渡される値、またはリクエストからこれらの変数に直接割り当てられる値であることに注意してください。

于 2012-10-25T21:09:59.293 に答える
0

テーブルは自分で作ることになりました。今ではかなり最小限の私の目的には十分です。

于 2011-02-28T18:29:56.720 に答える