DataTables 경고 : '0'행의 데이터 소스에서 알 수없는 매개 변수 '0'을 요청했습니다.
누구든지 아시겠습니까? 아래의 매우 간단한 HTML 파일에 어떤 문제가 있습니까?
DataTables의 데이터 원본 으로 개체 배열 을 사용하려고합니다 .
tests.html :
<html>
<head>
<link type="text/css" rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<link type="text/css" rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/css/jquery.dataTables_themeroller.css">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/jquery.dataTables.min.js"></script>
<script type="text/javascript">
var data = [
{"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
{"Name":"NRB Boot","Result":"PASS","ExecutionTime":"00:00:50.5000000","Measurement":[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]},
{"Name":"NvMgrCommit","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
{"Name":"SyncNvToEFS","Result":"PASS","ExecutionTime":"00:00:01.2500000","Measurement":[]}
];
$(function() {
var testsTable = $('#tests').dataTable({
bJQueryUI: true,
aaData: data,
aoColumns: [
{ mData: 'Name' },
{ mData: 'Result' },
{ mData: 'ExecutionTime' }
]
});
});
</script>
</head>
<body>
<table id="tests">
<thead>
<tr>
<th>Name</th>
<th>Result</th>
<th>ExecutionTime</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>
업데이트 : 좋아, 나는 저자로부터 DataTables의 최신 버전을 사용하거나 mData를 mDataProp로 이름을 바꾸라는 대답을 얻었습니다.
객체 배열을 사용하고 있습니다. 대신 2 차원 배열을 사용할 수 있습니까?
http://www.datatables.net/examples/data_sources/js_array.html
이 jsfiddle을 참조하십시오 : http://jsfiddle.net/QhYse/
나는 이와 같은 배열을 사용했고 잘 작동했습니다.
var data = [
["UpdateBootProfile","PASS","00:00:00",[]] ,
["NRB Boot","PASS","00:00:50.5000000",[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]] ,
["NvMgrCommit","PASS","00:00:00",[]] ,
["SyncNvToEFS","PASS","00:00:01.2500000",[]]
];
객체 배열을 포함하도록 편집
이 질문에서 가능한 해결책이 있습니다. jQuery DataTables fnrender with objects
이 jsfiddle http://jsfiddle.net/j2C7j/ 는 객체 배열을 사용합니다. 오류를 얻지 않으려면 3 개의 빈 값으로 채워야했습니다. 최적이 아닌 것입니다. fnRender를 사용하여 더 나은 방법을 찾을 수 있습니다. 그렇다면 게시하십시오.
var data = [
["","","", {"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]} ]
];
$(function() {
var testsTable = $('#tests').dataTable({
bJQueryUI: true,
aaData: data,
aoColumns: [
{ mData: 'Name', "fnRender": function( oObj ) { return oObj.aData[3].Name}},
{ mData: 'Result' ,"fnRender": function( oObj ) { return oObj.aData[3].Result }},
{ mData: 'ExecutionTime',"fnRender": function( oObj ) { return oObj.aData[3].ExecutionTime } }
]
});
});
들어 널 (null) 또는 정의되지 않은 값의 오류, 그냥이 줄을 속성에 추가 :,"columnDefs": [ { "defaultContent": "-", "targets": "_all" } ]
예 :
oTable = $("#bigtable").dataTable({
"columnDefs": [{
"defaultContent": "-",
"targets": "_all"
}]
});
경고 상자는 다시 표시되지 않으며 빈 값은 지정한 값으로 대체됩니다.
이것은 한 시간 이상 나를 괴롭 혔습니다.
dataSrc 옵션 및 열 정의 옵션을 사용하는 경우 올바른 위치에 있는지 확인하십시오. 나는 ajax 설정에 중첩 열 정의를 가지고 있었고 그것을 알아내는 데 너무 많은 시간을 잃었습니다.
이것은 좋다 :
이것은 좋지 않습니다.
미묘한 차이는 있지만 실제 탈모를 유발할 수 있습니다.
나는 같은 문제를 겪고 있었다. 제 경우에는 마지막 열 뒤에 쉼표가 누락되었습니다. 내 인생의 30 분 낭비, 나는 결코 돌아 오지 않을 것입니다!
열 이름이 동일한 지 확인하십시오. 대소 문자를 구분합니다. 여기에서 내 경우 모델의 열 이름이 대문자이고 ajax 요청 데이터에 모든 소문자를 사용하면이 오류가 발생했습니다.
따라서 기존 모델 이름과 똑같은 방식으로 열 이름을 일치시켜 해결했습니다.
DataTable 바인딩
$("#Customers").DataTable({
ajax: {
url: "/api/customers/",
dataSrc: ""
},
columns: [
{
data: "Name",
render: function (data, type, customer) {
return "<a href='/customers/edit/" + customer.Id + "'>" + customer.Name + "</a>";
}
},
{
data: "Name"
},
{
data: "Id",
render: function (data) {
return "<button class='btn-link js-delete' data-customer-id=" + data + ">Delete</button>";
}
}
]
});
웹 API 방법 :
public IEnumerable<Customer> GetCustomers()
{
return _context.Customers.ToList();
}
내 모델 :-
public class Customer
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
[Display(Name="Date Of Birth")]
public DateTime? BirthDate { get; set; }
public bool isSubscribedToNewsLetter { get; set; }
public MembershipType MembershipType { get; set; }
[Display(Name="Membership Type")]
[Required]
public byte MembershipTypeId { get; set; }
}
그래서 여기 내 경우에는 iam, columns (Name, Name, Id)로 datatable을 채우고 있습니다. iam 테스트 할 두 번째 열 이름을 복제합니다.
DataTables 웹 사이트에서 :
Each cell in DataTables requests data, and when DataTables tries to obtain data for a cell and is unable to do so, it will trigger a warning, telling you that data is not available where it was expected to be. The warning message is:
DataTables warning: table id=
{id}
- Requested unknown parameter '{parameter}
' for row{row-index}
where:
{id}
is replaced with the DOM id of the table that has triggered the error
{parameter}
is the name of the data parameter DataTables is requesting
{row-index}
is the DataTables internal row index for the rwo that has triggered the error.So to break it down, DataTables has requested data for a given row, of the
{parameter}
provided and there is no data there, or it isnull
orundefined
.
See this tech note on DataTables web site for more information.
I face this issue because I messed return keyword
in custom rendering
in Columns section
columns: [
{....
'data': function(row, type, val, meta) {
if (row.LetterStatus)
return '@CultureHelper.GetCurrentCulture()' == 'ar'? row.LetterStatus.NameInArabic: row.LetterStatus.NameInEnglish;
else row.LetterStatusID.toString();// here is the problem because I messed the Return key keyword
},
......
}
the problem in my code is because I messed
the Return keyword
in the else clause
so I changed it to
....
else return row.LetterStatusID.toString();// messed return keyword added
.....
This is a very common case in DataTables when it's not able to find the request field define in DataTable configuration.
For Example:
"aoColumns": [{
mData: 'mobile', sWidth: "149px;"
}, {
mData: 'name', sWidth: "121px;"
}, {
mData: 'productName', sWidth: "116px;"
}
}];
Here, If DataTable doesn't receive above mentioned properties. It'll generate this warning:
DataTables warning: Requested unknown parameter '0' from the data source for row '0'
To overcome this you just need to simply set a default value in "aoColumns"
For Example:
"aoColumns": [{
mData: 'mobile',sDefaultContent : '',sWidth: "149px;"
}, {
mData: 'name',sDefaultContent : '', sWidth: "121px;"
}, {
mData: 'productName',sDefaultContent : '', sWidth: "116px;"
}
}];
sDefaultContent will supress the warning.
Note: This property could be changed based on version of dataTables you are using.
In my weird scenario, I had a different column that didn't always return a value in the 'render' function. return null
solved my issue.
If someone is using the new DataTables (which is awesome btw) and want to use array of objects then you can do so easily with the columns option. Refer to the following link for an excellent example on this.
DataTables with Array of Objects
I was struggling with this for the past 2 days and this solved it. I didn't wanted to switch to multi-dimensional arrays for other code reasons so was looking for a solution like this.
If you're using knockout.bindings.dataTables.js
then you can edit the file and replace this line
dataTable.fnAddData(unwrappedItems);
with
if (unwrappedItems.length > 0) {
dataTable.fnAddData(unwrappedItems);
}
This has help me and i hope will help you.
'code' 카테고리의 다른 글
Java에서 String을 char로 또는 char를 String으로 어떻게 변환합니까? (0) | 2020.11.27 |
---|---|
파이썬 부동에서 정수로 변환 (0) | 2020.11.27 |
Apache HttpClient API에서 CloseableHttpClient와 HttpClient의 차이점은 무엇입니까? (0) | 2020.11.27 |
NLog 항목을 vs2008 '출력'창에 어떻게 출력 할 수 있습니까? (0) | 2020.11.27 |
키 / 값 쌍 개체에 항목을 삽입하는 방법은 무엇입니까? (0) | 2020.11.27 |