【问题标题】:jQuery Data Tables shows "No Data Available in Table" even if data exist and appearing in table [duplicate]即使数据存在并出现在表中,jQuery 数据表也会显示“表中没有可用数据”[重复]
【发布时间】:2018-11-12 23:13:24
【问题描述】:

花了几个小时寻找我面临的问题,我找到了一些可能的解决方案,例如 2 jQuery DataTables "No Data Available in Table"jQuery DataTables “No Data Available in Table” and tabled folds when sorting 但没有一个解决我的问题

问题是,当我的数据表中没有数据时,它显示表中没有可用的数据,这是正确的功能,但是一旦我通过 Web API Post 调用保存数据并通过 Web API Get 调用它调用并尝试在我的数据表中显示它,数据显示在我的数据表末尾没有可用的数据行。

这就是我的代码的样子,我正在使用 angularjs

我的保存按钮是;

<button type="button"
    class="btn btn-primary pull-right"
    ng-click="Insert()"
    ng-disabled="!frmClient.$valid">Save</button>

这是我的js文件中的插入函数

$scope.Insert = function ()
{
    //make a call to server to save date
    $http({
        method: "Post",
        data: $scope.Client,
        url: "/api/ClientWebAPI"
    }).then(function successCallback(clientData) {
        if (clientData.data.IsValid)
        {
            //Load the collection of clients
            $scope.Clients = clientData.data.Data;
            $scope.InitControls();
        }
        else
        {
            $scope.Errors = clientData.data.Data.Errors;
        }
    });
}

我的InitControls和Clients如下;

$scope.InitControls = function ()
{
    $scope.Client = {
        "rowuid": "0",
        "ClientID": "",
        "ClientName": "",
        "CreatedBy": "",
        "CreatedOn": "",
        "UpdatedBy": "",
        "UpdatedOn": ""
    };
}

$scope.InitControls();

$scope.Clients = {};

最后我的 HTML 数据表看起来像这样;

<table id="UzairTable"
                   class="table table-bordered table-hover">

    <thead>

        <tr>
            <th>Client ID</th>
            <th>Client Name</th>
            <th>Actions</th>
        </tr>

    </thead>

    <tbody>

        <tr ng-repeat="Client in Clients">
            <td>{{Client.ClientID}}</td>
            <td>{{Client.ClientName}}</td>
            <td> Edit/View/Delete</td>
        </tr>

    </tbody>
</table>

任何人都可以帮助我并指导我缺少什么,这将是一个很大的帮助,我已经尝试在我的 Insert 函数中在 InitControls 之前初始化我的数据表,但没有任何运气。

-----已编辑-----

@Enrique Fernandez 我在&lt;tr ng-repeat="Client in Clients"&gt; 中替换了client,但问题仍然存在

这是返回客户列表的后回调;

public object Post(ClientModel model)
    {
        ClientData clientData = new ClientData();
        if (ModelState.IsValid)
        {
            if (ClientHelper.Save(model).ToUpper() == "SAVED SUCCESSFULLY")
            {
                clientData.IsValid = true;
                clientData.Data = ClientHelper.GetAll();
            }
            else
            {
                Validation validation = new Validation();
                foreach (var modelState in ModelState)
                {
                    foreach (var error in modelState.Value.Errors)
                    {
                        validation.Errors.Add(error.ErrorMessage);
                    }
                }

                clientData.IsValid = false;
                clientData.Data = validation;
            }
        }

        return clientData;
    }

ClientHelper类中的GetAll()函数是as;

public static List<ClientModel> GetAll()
    {
        return service.GetAll().Select
            (x => new ClientModel(x)).ToList();
    }

在我的帖子调用中返回的我的客户端数据类如下所示;

 public class ClientData
{
    public bool IsValid { get; set; }
    public object Data { get; set; }
}

这就是我的帖子回调如何将数据返回到我的控制器 $scope.Insert 中的 function successCallback(clientData)

在我的布局视图中,这就是我使用数据表的方式;

<script>
    $(function () {
        $('#UzairTable').DataTable({
            'paging': true,
            'lengthChange': false,
            'searching': true,
            'ordering': true,
            'info': true,
            'autoWidth': true                
        });
    })
</script>

希望这有助于解决我的问题。

请注意,这不是重复问题,因为其他问题无法解决我的问题,此链接也无法解决我的问题Using Jquery Datatable with AngularJs

问候

【问题讨论】:

  • jQuery dataTables 大量操作 DOM,因此它与 Angular 冲突,后者也在不断改变 DOM。这使得 jQuery dataTables 排序、过滤等导致错误——实际上无法使用。

标签: jquery angularjs asp.net-mvc datatables


【解决方案1】:

我还不能发表评论。你能解决我对这个问题的一些疑问吗?

您是否尝试将&lt;tr ng-repeat="Client in Clients"&gt; 中的Client 替换为不在$scope 中的其他名称? Angular 可能会混淆 2 个同名变量。

如果不是问题:

一旦我通过 Web API Post 调用保存数据并通过 Web API Get 调用调用它并尝试在我的数据表中显示它

您的 POST 回调将客户端与客户端重置为 POST 请求返回的数据。这个数据是客户列表吗?

我们能否同时查看您的 GET 回调以及 GET 请求的发出位置?

花费数小时寻找我面临的问题,我找到了一些可能的解决方案,例如这 2 个 jQuery DataTables“表中没有可用数据”、jQuery DataTables“表中没有可用数据”和排序时的折叠折叠,但没有解决我的问题

我看不到您在哪里使用 jQuery 数据表。你能告诉我们那个代码吗?该消息似乎与该库中的消息相似。但我不确定我是否没有看到。

【讨论】:

  • 我已经编辑了问题以消除您的疑虑,请做必要的事情
猜你喜欢
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 2019-02-15
相关资源
最近更新 更多