找回密码
 立即注册

QQ登录

只需一步,快速开始

X765321

银牌会员

31

主题

99

帖子

3742

积分

银牌会员

积分
3742

活字格认证

[已处理] 强制spread刷新

X765321
银牌会员   /  发表于:2012-6-21 15:01  /   查看:13739  /  回复:19
客户端代码:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Button ID="btnEWSave" runat="server" Text="保存" />
<asp:UpdatePanel ID="upnEditButtonPanel" runat="server" UpdateMode="Conditional">
    <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="btnEWSave" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
服务器端按钮“btnEWSave”通过以上方法实现无刷新的执行服务端事件:
protected void btnEWSave_Click(object sender, EventArgs e)
{
    FpSpread1.ActiveSheetView.RowCount++;
}

问题:
1.此时FpSpread1行数并为改变,如何在不刷新整页的情况下使对FpSpread1的更改生效?
2.通过客户端方法CallBack触发ButtonCommand事件,在事件中对FpSpread1更改会生效。为什么在按钮的服务端事件中对FpSpread1更改无效,而在FpSpread1的服务端事件对FpSpread1的更改有效?有何区别?

19 个回复

正序浏览
iceman
社区贡献组   /  发表于:2012-6-28 17:50:00
20#
回复 19楼study1990的帖子

好的,问题正在处理中,有结果尽快通知楼主。
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-6-28 17:50:00
19#
回复 18楼iceman的帖子

都是最新的。
ASP.NET MVC3
FarPoint.Web.Spread:6.0.3505.2008
FarPoint.Mvc.Spread:6.0.4005.2010
运行时版本:v4.0.30319
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-28 17:04:00
18#
回复 17楼study1990的帖子

请问 study1990 使用 MVC2 还是 MVC3?使用 Spread 版本是 v6.0.3505 吗?
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-6-28 15:36:00
17#
回复 16楼iceman的帖子

在MVC模式下怎么使用?
我是利用
public ActionResult Add([MvcSpread(true)] FpSpread fpspread){}添加控件,
void fpspread_PreRender(object sender, EventArgs e)设置控件样式及属性,
和void fpspread_PreRenderComplete(object sender, EventArgs e)添加按钮的。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-28 12:01:00
16#
回复 15楼study1990的帖子

使用以下代码测试:

  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 this.Session[&quot;postback&quot;] = false;
  6.             }
  7.             else
  8.             {
  9.                 this.Session[&quot;postback&quot;] = true ;
  10.             }
  11.         }
  12.         protected override void Render(HtmlTextWriter writer)
  13.         {
  14.             if (Convert.ToBoolean(this.Session[&quot;postback&quot;]))
  15.             {
  16.                 //如果是第一次就渲染此按钮

  17.                 //保存到 session
  18.                 Session[this.FpSpread1.Sheets[0].SheetName] = this.FpSpread1.Sheets[0].SaveViewState();
  19.                
  20.             }
  21.             else
  22.             {
  23.                 this.FpSpread1.Sheets[0].LoadViewState(Session[this.FpSpread1.Sheets[0].SheetName]);
  24.             }
  25.             base.Render(writer);
  26.         }
复制代码
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-6-28 09:36:00
15#
回复 14楼iceman的帖子

怎么样当第一次渲染结束后利用上面保存代码将Spread放在Session里,然后当点击CommandBar按钮时不再次渲染,而利用上面读取代码获取Spread状态?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-27 18:00:00
14#
回复 13楼study1990的帖子

可以。
保存使用
  1. Session[e.SheetView.SheetName] = e.SheetView.SaveViewState();
复制代码

读取使用:
  1. e.SheetView.LoadViewState(Session[e.SheetView.SheetName]);
复制代码
回复 使用道具 举报
study1990
金牌服务用户   /  发表于:2012-6-27 17:12:00
13#
回复 12楼iceman的帖子

可不可以将整个Spread在session里,并保证Spread的完整性,当回调时从session里提取Spread?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-6-26 18:28:00
12#
回复 11楼study1990的帖子
你好,FpSpread_PreRender 事件每次回调都会触发,所以无法优化,同时,只有在 Render 事件中添加按钮才能保证每次回调都添加成功。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部