找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2012-6-15 16:40:00
21#
回复 20楼elwin的帖子

elwin 你好,
不好意思,没能重现楼主的问题,能否发个 Demo 到论坛调试?
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-6-15 16:45:00
22#
回复 21楼iceman的帖子

版主好,问题是存在的,不过很难重现啊。。。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-6-15 16:46:00
23#
回复 21楼iceman的帖子

已经知道 FpSpread1.SaveViewStateToSession = false的时候触发事件FpSpread1_SaveOrLoadSheetState ,版主的意思是通这个属性和事件解决视图的丢失的问题是吧?
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-6-15 17:06:00
24#
查帮助解释:When this property is true, the spread will save its view state to the Session object. And, the SaveOrLoadSheetState event will not be fired. If you don't want to save the spread view state to the Session object, you should set this property to false. The default value is true.
疑问1:FpSpread1.SaveViewStateToSession =true的情况下,spread 的view state会自动保存到Session Object? FpSpread1.ActiveSheetView.IsTrackingViewState = true 这个属性有必要设置为true吗?
疑问2:FpSpread1.SaveViewStateToSession =false的情况下会触发事件FpSpread1_SaveOrLoadSheetState ,是否是这样就可以把状态保存到指定的Seession 对象或者数据库中?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-15 17:41:00
25#
回复 24楼elwin的帖子

1.不需要设置 IsTrackingViewState 属性 为 true。
2.楼主可以参考帮助文档中:Saving Data to the Session State 章节,下面是该节代码片段:

  1. protected void Page_Load(object sender, System.EventArgs e)

  2. {

  3. if (this.IsPostBack) return;

  4. // Connect to NWIND MS Access example with OLE DB.

  5. OleDbConnection thisConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\\NWIND.MDB");

  6. // Open connection.

  7. thisConnection.Open();

  8. // Create DataSet to contain related data tables, rows, and columns.

  9. DataSet thisDataSet = new DataSet();

  10. OleDbDataAdapter orderAdapter = new OleDbDataAdapter("SELECT * FROM Orders", thisConnection);

  11. orderAdapter.Fill(thisDataSet, "Orders");

  12. FpSpread1.ActiveSheetView.IsTrackingViewState = true;

  13. FpSpread1.ActiveSheetView.DataSource = thisDataSet;

  14. FpSpread1.ActiveSheetView.DataMember = "Orders";

  15. }

  16. protected void FpSpread1_SaveOrLoadSheetState(object sender, FarPoint.Web.Spread.SheetViewStateEventArgs e)

  17. {

  18. if (e.IsSave)

  19. {

  20. Session[e.SheetView.SheetName] = e.SheetView.SaveViewState();

  21. }

  22. else

  23. {

  24. e.SheetView.LoadViewState(Session[e.SheetView.SheetName]);

  25. }

  26. e.Handled = true;

  27. }

复制代码
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-6-15 18:19:00
26#
版主,测试结果:使用SaveViewStateToSession=false的情况下,才触发事件SaveOrLoadSheetState哦。
不设置SaveViewStateToSession或者设置SaveViewStateToSession=true均不触发SaveOrLoadSheetState。

请教一下保存视图状态和保存整个spread表格有什么不一样啊?一样都是保存到数据库里边,然后都可以都可以还原显示在spread表格里边。。。
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-6-15 18:49:00
27#
很想知道 this.FpSpread1.ActiveSheetView.SaveViewState() 和this.FpSpread1.Save 这个方法哪个效率更高?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-18 18:17:00
28#
回复 27楼elwin的帖子

楼主所说的 this.FpSpread1.Save  是 this.FpSpread1.SaveChanges 方法还是 this.FpSpread1.Save(filename,boolean)方法?
回复 使用道具 举报
elwin
中级会员   /  发表于:2012-6-20 07:02:00
29#
回复 28楼iceman的帖子

this.FpSpread1.Save(filename,boolean)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-20 09:34:00
30#
回复 29楼elwin的帖子

this.FpSpread1.ActiveSheetView.SaveViewState() 方法效率更高。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部