找回密码
 立即注册

QQ登录

只需一步,快速开始

simon20130526

高级会员

12

主题

44

帖子

1190

积分

高级会员

积分
1190

活字格认证

simon20130526
高级会员   /  发表于:2013-6-6 21:50  /   查看:5465  /  回复:3
protected void fpPo_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
        {
            if (e.CommandName == "dataChanged")
            {
                int iCol = fpPo.Sheets[0].ActiveColumn;
                int iRow = fpPo.Sheets[0].ActiveRow;
                SID_Ocx.SID_Cls mCls = new SID_Ocx.SID_Cls();

                if (iCol == (int)VL.qty || iCol == (int)VL.unit_price)
                {
                    double dblAmt = mCls.Fun_ToNumeric(fpPo.Sheets[0].Cells[iRow, (int)VL.qty].Text) * mCls.Fun_ToNumeric(fpPo.Sheets[0].Cells[iRow, (int)VL.unit_price].Text);
                    fpPo.Sheets[0].Cells[iRow, (int)VL.amt].Text = dblAmt.ToString();
                    fpPo.SaveChanges();
                }

                Fun_SumAmt();
            }
        }

        private void Fun_SumAmt()
        {
            double dblAmt = 0, dblQty = 0;
            for (int i = 0; i < fpPo.Sheets[0].RowCount; i++)
            {
                dblAmt += mCls.Fun_ToNumeric(fpPo.Sheets[0].Cells[i, (int)VL.amt].Text);
                dblQty += mCls.Fun_ToNumeric(fpPo.Sheets[0].Cells[i, (int)VL.qty].Text);
            }

            txtTotalAmt.Text = dblAmt.ToString();
            txtTotalQty.Text = dblQty.ToString();

            fpTotal.Sheets[0].Cells[0, (int)VL.qty].Text = dblQty.ToString();
            fpTotal.SaveChanges();
        }

        protected void btnRef_Click(object sender, EventArgs e)
        {
            Fun_SumAmt();
        }

你好,请问下,我在ButtonCommand中计算出当前行的金额,并调用sumAMT求到总金额,想显示到另一个网格fpTotal中,但显示不出来,但我用btnRef单击时去调用就可以,不知道是怎么回事,请指点!

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-6-7 17:49:00
沙发
回复 1楼simon20130526的帖子

simon20130526 你好,

这是 Spread 内部机制的原因使 Spread2 设置没有成功,请使用我的代码实现:

  1.   protected override void Render(HtmlTextWriter writer)
  2.         {
  3.             WebControl update = this.FpSpread1.FindControl("Update") as WebControl;
  4.             Table viewport = this.FpSpread1.FindControl("viewport") as Table;
  5.             viewport.Attributes.Add("onclick", ClientScript.GetPostBackEventReference(FpSpread1, "Button,-1,-1") + "; return false;");
  6.             base.Render(writer);
  7.         }

  8. protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
  9.         {

  10.             ClientScript.RegisterStartupScript(this.GetType(), "newwin", "<script type ='text/javascript'> alert('UpdateCommand Test')</script>");
  11.             this.FpSpread2.Sheets[0].Cells[0, 0].Text = "fdsaf";
  12.         }
复制代码
回复 使用道具 举报
simon20130526
高级会员   /  发表于:2013-6-7 20:01:00
板凳
你好,这个方法确实可以刷新了,但是我想能否不使用onclick事件,而使用onActiveCellChanged事件或dataChanged事件呢,另外我想问一下,viewport.Attributes.Add(&quot;onclick&quot;, ClientScript.GetPostBackEventReference(FpSpread1, &quot;Button,-1,-1&quot;) + &quot;; return false;&quot;);
这段代码可以定义网格的单击事件,但dataChanged事件却定义不了,不知是为何,除onclick事件而,还有哪些事件可以用这种语句来定义,谢谢!
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-6-8 19:07:00
地板
回复 3楼simon20130526的帖子

你好,

除了点击事件,能用于 HTML table 的事件都可以用于注册。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部