找回密码
 立即注册

QQ登录

只需一步,快速开始

moriya

论坛元老

78

主题

189

帖子

4万

积分

论坛元老

积分
42318

活字格认证

moriya
论坛元老   /  发表于:2012-12-4 15:43  /   查看:5760  /  回复:7
hellow  iceman
       有一個問題請教一下 ,我在后臺檢查數據類型,如果有錯誤將該行標記為紅色代碼如下:
      后臺
      //對錯誤的行進行標識
        private void seterror(int row, int col, string message)
        {
            fpsWebRfqDtl.ActiveSheetView.Cells[row, col].Text = message;
            fpsWebRfqDtl.ActiveSheetView.Rows[row].BackColor = System.Drawing.Color.Red;
        }

       用戶在修改錯誤后將該行的紅色去掉,用javascript 和fpsWebRfqDtl_UpdateCommand 可實現代碼如下:
      前臺
      window.onload = function () {spread2.addEventListener("DataChanged", DataChanged, false);}
        function DataChanged() {
                 //alert("r" + event.row + ",c" + event.col);
                 fpsWebRfqDtl.UpdatePostbackData();
                 fpsWebRfqDtl.CallBack("Update");
             }
      后臺
                   protected void fpsWebRfqDtl_UpdateCommand(object sender, SpreadCommandEventArgs e)
        {
            fpsWebRfqDtl.ActiveSheetView.Rows[fpsWebRfqDtl.ActiveSheetView.ActiveRow].BackColor = System.Drawing.Color.White;
        }

       但是每次調用后臺很卡,很慢, 能不能在前臺僅僅用javascript實現,  
我采用另一種,將變顏色的程式全改為前臺
        seterror 函數 放到前臺 為changeColor
             function changeColor(row, col) {
                 var spread = this.document.getElementById("fpsWebRfqDtl_viewport");
                 spread.cells[row].style.backgroundColor = "red";
                 spread.cells[row].style.color = "red";
             } 但是顏色不能變紅, 該如何處理 ,目的實現檢查到錯誤時該行變紅,用戶修改后該行變白

7 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-4 20:06:00
沙发
moriya 你好

前台可以改变单元格的背景色,但是是否这不是一种合理的处理顺序,因为Spread中单元格的颜色是通过css样式来设置的,css的内容由你后台的属性设置决定。
回复 使用道具 举报
moriya
论坛元老   /  发表于:2012-12-5 07:53:00
板凳
hello:

         也就是說前臺不能控制,必須從后臺來控制
回复 使用道具 举报
moriya
论坛元老   /  发表于:2012-12-5 08:32:00
地板
hello dof:
            那也就是說用javascript 不能直接變更行的顏色是吧
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-5 17:26:00
5#
回复 3楼moriya的帖子

在前台只能临时改变背景色,一旦点击单元格之后又会恢复原样,由此,在前台修改的方法行不通

  1.     for (var col = 0; col < FpSpread1.GetColCount(); col++) {
  2.         FpSpread1.GetCellByRowCol(1, col).style.backgroundColor = "Red";
  3.     }
复制代码
回复 使用道具 举报
moriya
论坛元老   /  发表于:2012-12-6 08:07:00
6#
ok ,已采用別的方法解決
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-12-6 15:33:00
7#
谢谢你反馈该问题的处理情况,能否分享你的代码,供更多的用户参考
回复 使用道具 举报
moriya
论坛元老   /  发表于:2012-12-6 16:00:00
8#
沒有變更什么, 只是不采用ActiveCellChanged 來及時從前臺變更顏色, 而是在提交時再從后臺檢查一遍.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部