jQuery数据表显示"表中没有可用的数据"即使数据存在并出现在表格中

时间:2018-06-03 12:57:53

标签: jquery angularjs asp.net-mvc datatables

花费数小时搜索我遇到的问题我找到了一些可能的解决方案,例如这些jQuery DataTables "No Data Available in Table"jQuery DataTables “No Data Available in Table” and tabled folds when sorting,但没有解决我的问题

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

这是我的代码的样子,我正在使用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和客户端如下;

$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>

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

- - - - - - - - 编辑的

@Enrique Fernandez我替换了client中的<tr ng-repeat="Client in Clients">,但问题仍然存在

这是回复的帖子,它返回客户列表;

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()函数为;

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; }
}

这就是我的回访时将数据返回到我的控制器function successCallback(clientData)中的$scope.Insert

的方式

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

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

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

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

此致

1 个答案:

答案 0 :(得分:0)

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

您是否尝试将Client中的<tr ng-repeat="Client in Clients">替换为$scope以外的其他名称? Angular可能会混淆2个具有相同名称的变量。

如果不是问题:

  

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

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

我们可以看到你的GET回调以及发出GET请求的位置吗?

  

花费数小时搜索我面临的问题我发现了一些可能的解决方案,例如这两个jQuery DataTables“表中没有可用的数据”,jQuery DataTables“表中没有数据”并且在排序时表格折叠但没有解决我的问题< / p>

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