Sitefinity结帐小部件:如何使用自定义数据填充结算地址

时间:2018-04-17 20:00:08

标签: e-commerce sitefinity

我将使用哪个sitefinity事件来修改结帐窗口小部件的默认结算行为?我已阅读过这些页面

我需要覆盖结帐小部件的这一部分

  

如果用户是回头客,则送货地址将显示为预先填写用户最后指定的信息。

这会为我做吗? https://docs.sitefinity.com/for-developers-preprocessorder-event

更新:这里要求的是我尝试过的一些代码

连接到OnEcommerceCheckoutPageChanging事件 global.ascx.cs       private void Bootstrapper_Initialized(对象发送者,Telerik.Sitefinity.Data.ExecutedEventArgs e)      {       EcommercePriceServiceCustomTiers.Register();

  if (e.CommandName == "Bootstrapped")
  {

    EventHub.Subscribe<IEcommerceCheckoutPageChangingEvent>(SitefinityWebApp.Custom.Ecommerce.EcommerceCheckoutPageChangingHandler.OnEcommerceCheckoutPageChanging);}

以下是获取地址的代码。这是在页面加载后得到它我需要事件发生之前

  public static void OnEcommerceCheckoutPageChanging(IEcommerceCheckoutPageChangingEvent evt)
    {
        // This event could be raised after the shopping cart was destroyed so make sure you return when the ShoppingCartId is empty or null.
        if (evt.ShoppingCartId == Guid.Empty || evt.ShoppingCartId == null)
        {
            log.Debug("The Cart no longer exists");
            return;
        }

         if(evt.CurrentStepIndex == 0)
        {
            var ordersManager = OrdersManager.GetManager();
            // Get a copy of the shopping cart order based on the evt.ShoppingCartId.
            var cartOrder = ordersManager.GetCartOrder(evt.ShoppingCartId);
            List<CartAddress> adds = cartOrder.Addresses.ToList();// new List<CartAddress>();
            foreach(CartAddress add in adds)
            {
               /// make the modifications to the addresses here
               /// this fires after i need it to , i need the event before this fires
            /// note the "evt.CurrentStepIndex == 0" step i am referencing
            }

            ordersManager.SaveChanges();
        }

1 个答案:

答案 0 :(得分:0)

我相信这是结帐小部件的默认行为。我刚刚使用默认的小部件设置下了一个订单,然后又回到了另一个订单并填充了我的地址。

如果您需要访问不同的页面事件,可以将代码附加到用户控件。

在小部件模板中,修改第一行,如下所示:

<%@ Control Language="C#" Inherits="SitefinityWebApp.Helpers.Checkout.CheckoutTabStrip" %>

inherits 是一个实现UserControl的类。该文件位于〜/ {ProjectRoot} /Helpers/Checkout/CheckoutTabStrip.cs(可以在任何地方生活)

以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using Telerik.Web.UI;

namespace SitefinityWebApp.Helpers.Checkout
{
    public class CheckoutTabStrip : UserControl
    {
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (FindControl("checkoutTabStrip") is RadTabStrip checkoutTabStrip)
            {
                checkoutTabStrip.DataBound += CheckoutTabStrip_DataBound;
            }
        }

        private void CheckoutTabStrip_DataBound(object sender, EventArgs e)
        {
            //DO STUFF
        }
    }
}

有关事件的更多信息,请查看Rad Tab Strip文档: https://docs.telerik.com/devtools/aspnet-ajax/controls/tabstrip/tabs/working-with-tabs-at-the-server