我花了几个小时寻找我面临的问题我找到了一些可能的解决方案,比如这两个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
我的保存按钮是as;
<button type="button"
class="btn btn-primary pull-right"
ng-click="Insert()"
ng-disabled="!frmClient.$valid">Save</button>
下面是我的js文件中的insert函数
$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我在我的<tr ng-repeat="Client in Clients">
中替换了client
,但问题仍然存在
下面是返回客户端列表的post回调;
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();
}
在post调用中返回的客户端数据类如下所示;
public class ClientData
{
public bool IsValid { get; set; }
public object Data { get; set; }
}
这就是我的post回调向控制器$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
问候
发布于 2018-06-03 21:56:52
我还不能发表评论。你能给我解答一下这个问题吗?
您是否尝试过将<tr ng-repeat="Client in Clients">
中的Client
替换为$scope
中不存在的其他名称?Angular可能会混淆两个同名的变量。
如果这不是问题所在:
只要我通过web API Post调用保存数据,并通过web API Get调用调用它,并尝试在我的数据表中显示它,就执行
POST回调将客户端重置为POST请求返回的数据。此数据是客户端列表吗?
我们可以看看你的GET回调以及GET请求是在哪里发出的吗?
我花了几个小时寻找我所面临的问题,我找到了一些可能的解决方案,比如这2个jQuery DataTables“表中没有数据”,jQuery DataTables“表中没有数据”,以及排序时的折叠表,但都没有解决我的问题
我不知道您在哪里使用jQuery数据表。你能给我们看一下那段代码吗?这条消息似乎和那个库中的消息相似。但如果我看不到这一点,我就不能确定。
https://stackoverflow.com/questions/50666666
复制相似问题