管理者の注文リスト ビューを現在のカート ページのように機能するように変更したいと考えていました。つまり、注文の詳細ビューを開くと、その注文内で注文されたアイテムが表示される詳細ビューが必要でした。
これを実現するために、コードに次の変更を加えましたが、機能していません!
@(Html.Telerik().Grid<OrderModel>()
.Name("orders-grid")
.ClientEvents(events => events
.OnDataBinding("onDataBinding")
.OnDataBound("onDataBound")
.OnComplete("onComplete"))
.Columns(columns =>
{
columns.Bound(x => x.Id)
.ClientTemplate("<input type='checkbox' name='checkedRecords'
value='<#= Id #>' class='checkboxGroups'/>")
.Title("<input id='mastercheckbox' type='checkbox'/>")
.Width(50)
.HtmlAttributes(new { style = "text-align:center" })
.HeaderHtmlAttributes(new { style = "text-align:center" });
columns.Bound(x => x.Id)
.Template(x => Html.ActionLink(x.CustomerEmail, "Details",
"Order", new { id = x.Id }, new { }))
.ClientTemplate("<a href=\"Edit/<#= Id #>\">" +
T("Admin.Common.View").Text + "</a>");
if (!Model.IsLoggedInAsVendor)
{
//a vendor does not see order details such statuses or
totals
columns.Bound(x => x.OrderStatus);
}
columns.Bound(x => x.PaymentStatus);
if (!Model.IsLoggedInAsVendor)
{
//a vendor does not see order details such statuses or
totals
columns.Bound(x => x.ShippingStatus);
}
columns.Bound(x => x.CustomerEmail);
columns.Bound(x => x.StoreName);
columns.Bound(x => x.CreatedOn);
if (!Model.IsLoggedInAsVendor)
{
//a vendor does not see order details such statuses or
totals
columns.Bound(x => x.OrderTotal)
.FooterTemplate(
string.Format("<div><strong>{0}:</strong></div>"
+
"<div>{1}: <span id=\"aggregator-
profit-block\"></span></div>" +
"<div>{2}: <span id=\"aggregator-
tax-block\"></span></div>" +
"<div>{3}: <span id=\"aggregator-
total-block\"></span></div>",
T("Admin.Orders.Report.Summary").Text,
T("Admin.Orders.Report.Profit").Text,
T("Admin.Orders.Report.Tax").Text,
T("Admin.Orders.Report.Total").Text));
}
columns.Bound(x => x.Id)
.Template(x => Html.ActionLink(T("Admin.Common.View").Text,
"Edit", new { id = x.Id }))
.ClientTemplate("<a href=\"Edit/<#= Id #>\">" +
T("Admin.Common.View").Text + "</a>")
.Width(50)
.Centered()
.Title(T("Admin.Common.View").Text);
})
.DetailView(details => details.ClientTemplate(
Html.Telerik().Grid<OrderModel.OrderProductVariantModel>()
.Name("cartitems-grid-<#= Order Id #>")
.Columns(columns =>
{
columns.Bound(sci => sci.FullProductName)
.Template(sci => Html.ActionLink(sci.FullProductName,
"Edit", "ProductVariant", new { id = sci.ProductVariantId }, new { }))
.ClientTemplate("<a href=\""+
@Url.Content("~/Admin/ProductVariant/Edit/") + "<#= ProductVariantId #>\"><#=
FullProductName #></a>");
columns.Bound(sci => sci.Quantity).Width(100);
columns.Bound(sci => sci.UnitPriceInclTax).Width(100);
columns.Bound(sci => sci.SubTotalInclTax).Width(100);
// columns.Bound(sci => sci.Store).Width(150);
// columns.Bound(sci => sci.UpdatedOn).Width(100);
})
.DataBinding(dataBinding => dataBinding.Ajax()
.Select("GetOrderDetails", "Order", new
{
OrderId =
"<#= OrderId #>"
}))
.ToHtmlString()
)
)
.Pageable(settings =>
settings.PageSize(gridPageSize).Position(GridPagerPosition.Both))
.DataBinding(dataBinding => dataBinding.Ajax().Select("OrderList",
"Order"))
.EnableCustomBinding(true))
OrdersProductVariantModel を介して OrdersModel の部分クラスからデータを取得して、このデータを表示しようとしています
次のメソッドを含めるように OrderController を変更しました
[GridAction(EnableCustomBinding = true)]
public ActionResult GetOrderDetails(int OrderId)
{
if (!_permissionService.Authorize(StandardPermissionProvider.ManageCurrentCarts))
return AccessDeniedView();
// var customer = _customerService.GetCustomerById(customerId);
// var cart = customer.ShoppingCartItems.Where(x => x.ShoppingCartType == ShoppingCartType.ShoppingCart).ToList();
var order = _orderService.GetOrderById(OrderId);
var orderDetails = order.OrderProductVariants.ToList();
var gridModel = new GridModel<OrderModel.OrderProductVariantModel>()
{
// Data = cart.Select(sci =>
Data = orderDetails.Select(sci =>
{
// decimal taxRate;
// var store = _storeService.GetStoreById(sci.StoreId);
var sciModel = new OrderModel.OrderProductVariantModel()
{
Id = sci.Id,
// Store = store != null ? store.Name : "Unknown",
ProductVariantId = sci.ProductVariantId,
Quantity = sci.Quantity,
FullProductName = sci.ProductVariant.FullProductName,
// UnitPrice = _priceFormatter.FormatPrice(_taxService.GetProductPrice(sci.ProductVariant, _priceCalculationService.GetUnitPrice(sci, true), out taxRate)),
// Total = _priceFormatter.FormatPrice(_taxService.GetProductPrice(sci.ProductVariant, _priceCalculationService.GetSubTotal(sci, true), out taxRate)),
// UpdatedOn = _dateTimeHelper.ConvertToUserTime(sci.UpdatedOnUtc, DateTimeKind.Utc)
};
return sciModel;
}),
// Total = cart.Count
};
return new JsonResult
{
Data = gridModel
};
}
ただし、コードを実行すると、リストページにまったくアクティビティがないため、注文の読み込みも停止します!
誰かがこの問題を解決するのを手伝ってくれますか?
ありがとうアミット。