私はこれに1日立ち往生していて、私は正気を失っています。おそらく本当に単純なものですが、ここに行きます。
Ordersのリストを取得するWebMethodを呼び出すjQuery.Ajaxメソッドがあります。jQueryメソッドはこれです...
/* Get orders by the current logged in employee's department */
function getOrdersByDept(department, filter, dateFrom, dateTo) {
var dto = {};
dto['department'] = department;
dto['filter'] = filter;
dto['dateFrom'] = dateFrom;
dto['dateTo'] = dateTo;
$.ajax({
type: 'POST',
url: 'ProcessPO.aspx/GetOrdersByDept',
data: JSON.stringify(dto),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
displayOrders(data.d);
},
error: function (xhr, status, errorThrown) {
alert(xhr.responseText);
}
});
}
このJSONを返します...
このWebメソッドから...
[WebMethod]
public static List<Order> GetOrdersByDept(Department department, Filter filter, DateTime? dateFrom = null, DateTime? dateTo = null)
{
return OrderLists.GetOrdersByDepartment(department, filter, dateFrom, dateTo);
}
これがdisplayOrdersコードです...
/* Fill the orders table. */
function displayOrders(data) {
$('#gdvOrders tbody').empty();
for (var key in data) {
var altRow;
if (key % 2 == 0)
altRow = 'class="alt-row"';
else
altRow = '';
/* Convert JSON formatted date to readable short date format */
var orderDate = data[key].OrderDate.substr(6);
var currentTime = new Date(parseInt(orderDate));
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
orderDate = day + "/" + month + "/" + year;
var orderStatus;
switch (data[key].Status) {
case 0:
orderStatus = 'Pending';
break;
case 1:
orderStatus = 'Closed';
break;
}
$('#gdvOrders tbody').append($('<tr ' + altRow + '><td>' + data.d[key].OrderId + '</td>' +
'<td>' + orderDate + '</td>' +
'<td>' + data[key].EmployeeName + '</td>' +
'<td>' + data[key].Items + '</td>' +
'<td>$' + data[key].SubTotal.toFixed(2) + '</td>' +
'<td>$' + data[key].TaxTotal.toFixed(2) + '</td>' +
'<td>$' + data[key].GrandTotal.toFixed(2) + '</td>' +
'<td>' + orderStatus + '</td></tr>'));
}
$('#gdvOrders tbody td:nth-child(4)').hide();
$('#gdvOrders tbody td:nth-child(5)').hide();
$('#gdvOrders tbody td:nth-child(6)').hide();
}
各注文には、基本的にリストであるアイテムのプロパティがあります。それを表の4列目に保存して非表示にします。ユーザーがテーブル内の行/順序をクリックしたときに、各アイテムの別のリストを別のテーブルにロードしたいと思います。表示用に削除された注文の行のクリック機能はこれです...。
$('#gdvOrders tbody tr').live('click', function () {
displayItems($(this).find('td:nth-child(4)').text());
});
これで、displayItems関数は次のように定義されます...
function displayItems(data)
データを反復処理するためにさまざまな方法を試しましたが、...
alert(data)
私は受け取ります...
[object Object], [object Object]
それを反復しようとすると(いくつかの異なる方法を試しました)、未定義になるか、[data [0]を試すと、データ1にoなどが表示されます。基本的には、配列内のオブジェクトではなく、[objectObject]の各文字を返すだけです。私は何が間違っているのですか?