找回密码
 立即注册

QQ登录

只需一步,快速开始

sam
论坛元老   /  发表于:2012-6-2 18:46  /   查看:10436  /  回复:12
Hi Dof:

现在我这边又有个新需求,即:当改变某个单元格的值时候,需同步清空当前行另一个或几个单元格的值。我尝试过使用事件:onDataChanged.
这个事件如果开始表格中有值时,就会生效。但是,当我开始表格没值时,我再通过后台增加一行空行时,其中的onDataChanged事件功能就会全部失效。(说明:我的需求是要采用后台来增加行)。
附件是我做的Demo例子。请尽快帮我看看。页面是WebForm1.aspx

这个需求很急的。谢谢!

PopupCellTypeDemo_Modal.rar

3.39 MB, 下载次数: 256

12 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-4 17:54:00
沙发
回复 1楼sam的帖子

你好 sam

我使用附件中的Demo进行了测试,的确没有触发datachange事件。
不过你可以直接指定Spread客户端的DataChanged事件,这样是可以触发的


datachanged.png
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-6-5 14:07:00
板凳
嗨,Dof:

以上的事件我已找到,但是我有个问题。
因为我的Spread控件是动态生成的。我该如何
在程序中来指定关联哪个Js事件脚本函数呢?
烦请告知。谢谢!
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-6-5 14:27:00
地板
我已自己试出来了。在Page_Load里添加:
FpSpread1.Attributes.Add("onDataChanged", "FpSpread1_DataChanged(event);");

请帮帮忙确认下,是不是这样实现的。

谢谢!
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-6-5 14:36:00
5#
实现了以上,我这边又遇到一个问题:
当开始表格有行的时,我触发执行了ondataChanged事件后,再新增行就会使Spread整个失效。
这个又是什么原因。看如何解决?非常紧急。
谢谢!

CS:
protected void Page_Load(object sender, EventArgs e)
        {
            FpSpread1.Attributes.Add("onDataChanged", "FpSpread1_DataChanged(event);");
            if (!Page.IsPostBack)
            {
                FpSpread1.ActiveSheetView.RowCount = 2;
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            FpSpread1.ActiveSheetView.Rows.Add(FpSpread1.ActiveSheetView.Rows.Count, 1);
        }

JS:
<script language="javascript" type="text/javascript">
        function FpSpread1_DataChanged(event) {
            //Add code to handle your event here.
            if (FpSpread1.ActiveCol == 1) {
                FpSpread1.SetValue(FpSpread1.ActiveRow, 2, "");
            }
        }
    </script>
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-5 14:36:00
6#
回复 4楼sam的帖子

Hi sam

通过你的方法 FpSpread1.Attributes.Add("onDataChanged", "FpSpread1_DataChanged(event);");  指定 JS 方法是正确的

如果在VS中直接指定 DataChanged 事件,最终将生产这样的JS:
  1.     <script type="text/javascript">
  2.         document.getElementById('FpSpread1').onDataChanged = function (event) { if (event == null) event = window.event; FpSpread1_DataChanged(event); }
  3.     </script>
复制代码
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-6-5 14:39:00
7#
提示:点击外部的“新增”按钮。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-5 15:06:00
8#
回复 7楼sam的帖子

抱歉,没能明白你这句话的意思:
提示:点击外部的“新增”按钮。
回复 使用道具 举报
sam
论坛元老   /  发表于:2012-6-5 17:16:00
9#
我的意思是指:按后台的我自己新增的按钮。不是按Spread控件上的新增.请帮忙看看,能否解决。

方法是:
protected void Button1_Click(object sender, EventArgs e)
        {
            FpSpread1.ActiveSheetView.Rows.Add(FpSpread1.ActiveSheetView.Rows.Count, 1);
        }

55.JPG

26.06 KB, 下载次数: 151

回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-5 18:15:00
10#
回复 9楼sam的帖子

你好 sam

我正在调试你的Demo,明天上午给你回复。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部