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