用户控件回发后数据丢失了
一个页面中用了一个订单用户控件
订单用户控件中又使用了订单项用户控件
当回发数据时候,订单用户控件的数据有显示,可是订单项的数据丢失了
正常情况
############################################################
订单编号: E0709130318335142-01 新订单 自行取消查看订购商品
创建时间: 2007-9-13 15:18:13 共 0元
关闭订购商品信息
送货方式: 平邮 共订购 3 种产品
21世纪赢的策略(企业变革) 订购数量: 订购 10 件 ( 11.00 元/件) 共 110.00 元
产品名 订购数量: 订购 30 件 ( 11.00 元/件) 共 330.00 元
21世纪赢的策略(企业变革) 订购数量: 订购 20 件 ( 11.00 元/件) 共 220.00
###################################################################
回发后
#####################################################################
订单编号: E0709130318335142-01 新订单 自行取消查看订购商品
创建时间: 2007-9-13 15:18:13 共 0元
关闭订购商品信息
####################################################################
---------------------------
订单项用户控件
------------------------------
public class OrderItemList : System.Web.UI.UserControl,System.Web.UI.IPostBackEventHandler,System.Web.UI.IPostBackDataHandler
{
protected System.Web.UI.WebControls.DataList dlOrderItem;
//订单号
private string _order_number;
//送货方式
private string _shipmethod;
private int _recordCount = 0;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
BindOrderItemList();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
///设计器支持所需的方法 - 不要使用代码编辑器
///修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.dlOrderItem.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.dlOrderItem_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public string OrderNumber
{
get
{
if(ViewState[ "OrderItem "]!=null)
_order_number = ViewState[ "OrderItem "].ToString();
return _order_number;
}
set
{
ViewState[ "OrderItem "] = value;
_order_number = value;
}
}
public string ShipMethod
{
get
{
if(ViewState[ "ShipMethod "]==null)
_shipmethod = ViewState[ "ShipMethod "].ToString();
return _shipmethod;
}
set{
_shipmethod = value;
ViewState[ "ShipMethod "] =value;
}
}
private void BindOrderItemList()
{
IList list = null;
int recordCount = 0;
list = new OrderItemServices().GetList(100,1,out recordCount,OrderNumber);
//绑定数据
dlOrderItem.DataSource = list;
_recordCount = recordCount;
dlOrderItem.DataBind();
}
private void dlOrderItem_ItemDataBound(object sender, DataListItemEventArgs e)
{
//Label lbl = null;
////设置送货方式
//lbl = e.Item.FindControl( "lblShipMethod ") as Label;
//lbl.Text = ShipMethod;
////设置产品数
//lbl = e.Item.FindControl( "lblCount ") as Label;
//lbl.Text = _recordCount.ToString();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender (e);
this.Page.RegisterRequiresPostBack(this);
}
#region IPostBackDataHandler 成员
public void RaisePostDataChangedEvent()
{
// TODO: 添加 OrderItemList.RaisePostDataChangedEvent 实现
}
public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
// TODO: 添加 OrderItemList.LoadPostData 实现
return false;
}
#endregion
#region IPostBackEventHandler 成员
public void RaisePostBackEvent(string eventArgument)
{
// TODO: 添加 OrderItemList.RaisePostBackEvent 实现
}
#endregion
}
}
[解决办法]
把订单项也放在aspx中看看?
[解决办法]
<%@ Page EnableViewState = "true "%>
[解决办法]
if(!IsPostBack)
回传了
[解决办法]
只有 JF 了
[解决办法]
up
[解决办法]
public class OrderItemList : System.Web.UI.UserControl,System.Web.UI.IPostBackEventHandler,System.Web.UI.IPostBackDataHandler
#region IPostBackDataHandler 成员
public void RaisePostDataChangedEvent()
{
// TODO: 添加 OrderItemList.RaisePostDataChangedEvent 实现
}
public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
// TODO: 添加 OrderItemList.LoadPostData 实现
return false;
}
#endregion
#region IPostBackEventHandler 成员
public void RaisePostBackEvent(string eventArgument)
{
// TODO: 添加 OrderItemList.RaisePostBackEvent 实现
}
#endregion
==================
晕菜了......
实现了 IPostBackEventHandler IPostBackDataHandler 接口,却什么事都没有干,
去掉 ...
[解决办法]
mark
[解决办法]
MARK