E commerce SiteFinityCheckout小部件:如何使用自定义数据填充帐单地址

E commerce SiteFinityCheckout小部件:如何使用自定义数据填充帐单地址,e-commerce,sitefinity,E Commerce,Sitefinity,我要连接到什么sitefinity事件来修改签出小部件的默认计费行为?我读了这几页 我需要覆盖结帐小部件的这一部分 如果用户是退货客户,则发货地址将以用户上次指定的信息作为前缀显示 这个能帮我吗 更新:这里是我尝试过的一些代码 连接到OneCommerceCheckOutPageChanged事件 global.ascx.cs 私有无效引导程序_已初始化(对象发送方,Telerik.Sitefinity.Data.ExecutedEventArgs e) { EcommercePric

我要连接到什么sitefinity事件来修改签出小部件的默认计费行为?我读了这几页

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

如果用户是退货客户,则发货地址将以用户上次指定的信息作为前缀显示

这个能帮我吗

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

连接到OneCommerceCheckOutPageChanged事件 global.ascx.cs 私有无效引导程序_已初始化(对象发送方,Telerik.Sitefinity.Data.ExecutedEventArgs e) { EcommercePriceServiceCustomTiers.Register()

if(e.CommandName==“引导”)
{
订阅(SitefinityWebApp.Custom.EcommerceCheckoutPageChangingHandler.onecommercheckoutpagechanging);}
这是获取地址的代码。这是在页面加载后获取的。我需要在事件发生之前获取它

  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();
        }
公共静态无效OneCommerceCheckOutPageChanged(IECCommercheckOutPageChangingEvent evt)
{
//此事件可能在购物车被销毁后引发,因此请确保在ShoppingCartId为空或null时返回。
if(evt.ShoppingCartId==Guid.Empty | | evt.ShoppingCartId==null)
{
调试(“购物车不再存在”);
返回;
}
如果(evt.CurrentStepIndex==0)
{
var ordersManager=ordersManager.GetManager();
//根据evt.ShoppingCartId获取购物车订单的副本。
var cartOrder=ordersManager.GetCartOrder(evt.ShoppingCartId);
List adds=cartOrder.Addresses.ToList();//新列表();
foreach(CartAddress加载项添加)
{
///在这里修改地址
///这会在我需要它之后触发,我需要在触发之前触发事件
///注意我正在引用的“evt.CurrentStepIndex==0”步骤
}
ordersManager.SaveChanges();
}

我相信这是签出小部件的默认行为。我只是使用小部件的默认设置下了一个订单,然后返回下了另一个订单,并填充了我的地址

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

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

<%@ Control Language="C#" Inherits="SitefinityWebApp.Helpers.Checkout.CheckoutTabStrip" %>
有关事件的更多信息,请查看Rad选项卡Strip docs:

请发布一些您尝试过的代码。@nixkuroi我用确实执行的代码更新了原始消息,但在我需要它之后执行。
<%@ Control Language="C#" Inherits="SitefinityWebApp.Helpers.Checkout.CheckoutTabStrip" %>
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
        }
    }
}