5

我正在开发 nopcommerce2.8 版本。我在使用 Telerik 插件实现创建新网格时遇到问题。我正在实施一个概念,对于产品,我想为不同的客户提供不同的价格。因此,要为不同的客户分配新价格,在管理面板中,我正在使用 Telerik 在编辑产品变体页面中创建一个网格。我创建了一个新选项卡来显示这些详细信息。我能够在网格中显示客户名称和价格,但是当我在编辑一行后单击更新按钮时,我无法调用更新功能。我也调用了相同的更新函数来删除网格行,所以当我单击删除时,相同的更新函数会触发。我认为 View 中遗漏了一些设置。请帮我解决这个更新问题。

下面给出了我的 nopcommerce 的模型、视图和控制器。

谢谢。

//Model
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using FluentValidation.Attributes;
using Nop.Admin.Models.Customers;
using Nop.Admin.Validators.Catalog;
using Nop.Web.Framework;
using Nop.Web.Framework.Localization;
using Nop.Web.Framework.Mvc;
using Telerik.Web.Mvc;

namespace Nop.Admin.Models.Catalog
{
    public partial class CustomerProductPriceModel : BaseNopModel
    {
        public int Customer_Id { get; set; }
        [NopResourceDisplayName("Customer Name")]
        public string Customer_name { get; set; }

        [NopResourceDisplayName("Price")]
        public decimal Price { get; set; }

        [NopResourceDisplayName("Unit")]
        public string Units { get; set; }

    }
}

// view

  @(Html.Telerik().Grid<CustomerProductPriceModel>()
        .Name("Grid")
        .DataKeys(x =>
                    {
                        x.Add(y => y.Customer_Id);
                    })
                     .DataBinding(dataBinding =>
                    {
                            dataBinding.Ajax()
                            .Select("CustomerProductPriceList", "ProductVariant", new { productVariantId = Model.Id })
                            .Update("CustomerPriceUpdate", "ProductVariant", new { productVariantId = Model.Id })
                             .Delete("CustomerPriceUpdate", "ProductVariant", new { productVariantId = Model.Id });
                    })
        .Columns(columns =>
        {
            columns.Bound(y => y.Customer_name).Width(200).ReadOnly();
            columns.Bound(y => y.Price).Width(100);

            columns.Command(commands =>
            {
                commands.Edit().Text(T("Admin.Common.Edit").Text);
                commands.Delete().Text(T("Admin.Common.Delete").Text);
            }).Width(180);

        })
        .Editable(x =>
                {
                    x.Mode(GridEditMode.InLine);
                })
        .EnableCustomBinding(true)

      )


    // controller

    [GridAction(EnableCustomBinding = true)]
        public ActionResult CustomerPriceUpdate(GridCommand command, CustomerProductPriceModel model, int productVariantId)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageCatalog))
                return AccessDeniedView();


             return CustomerProductPriceList(command, productVariantId);
        }


       [HttpPost, GridAction(EnableCustomBinding = true)]
        public ActionResult CustomerProductPriceList(GridCommand command, int productVariantId)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageCatalog))
                return AccessDeniedView();

            var productVariant = _productService.GetProductVariantById(productVariantId);
            if (productVariant == null)
                throw new ArgumentException("No product variant found with the specified id");

            var CustomerPrices = PrepareCustomerProductPriceModel(productVariant.Product.Id);
            var CustomerPricesa = CustomerPrices
               .Select(x =>
               {
                   return new CustomerProductPriceModel()
                   {
                       Customer_Id = x.Customer_Id,
                       Price = x.Price,
                       Units = x.Units,
                       Customer_name = x.Customer_name
                   };
               })
               .ToList();
            var model = new GridModel<CustomerProductPriceModel>
            {
                Data = CustomerPricesa,
                Total = CustomerPrices.Count
            };
            return new JsonResult
            {
                Data = model
            };
        }
4

1 回答 1

0

是否有理由不使用 nopCommerce 中已有的内置客户价格水平,或者您想一次显示所有价格?

于 2013-04-08T22:57:48.580 回答