找回密码
 立即注册

QQ登录

只需一步,快速开始

icy_fang

注册会员

1

主题

7

帖子

99

积分

注册会员

积分
99
最新发帖
icy_fang
注册会员   /  发表于:2017-7-20 13:39  /   查看:6746  /  回复:14
本帖最后由 icy_fang 于 2017-7-20 17:15 编辑

问题上午发到ASP.NET 求助中心去了,刚找到此版本,也许发到这里更适合。所以重新发送一遍,若有打扰请见谅。
参考例子       :http://demo.gcpowertools.com.cn/spreadjs/views/#/demos/BatchEdit
本地运行环境:Windows7 32-bit, IE Version:11.0.9600
本地代码使用JS版本与例子不同:
本地:
<script src="~/Content/js/gc.spread.common.10.1.1.min.js" type="text/javascript"></script>
<script src="~/Content/js/gc.spread.views.dataview.10.1.1.min.js" type="text/javascript"></script>
<script src="~/Content/js/plugins/gc.spread.views.gridlayout.10.1.1.min.js" type="text/javascript"></script>
<script src="~/Content/js/plugins/gc.spread.views.paging.10.1.1.min.js" type="text/javascript"></script>
参考例子使用版本是: 10.0.0
问题现象:当点击"保存改变"按钮,IE弹出错误如下,见图1:0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'ajaxBatch'
If there is a handler for this exception, the program may be safely continued.




请帮忙分析下问题出现的大致原因,谢谢。
=> 此问题已解决,原因:页面框架中的js脚本影响,暂时先独立运行页面,不再报告错误。

2017.07.20 PM 5:00 追问:
示例代码中,/api/records/的后台代码是如何接收data的?后台的代码可以共享下么?

14 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 17:18:05
沙发
spread view的问题您就发到这里

我没重现您的问题,但是有一点您需要注意“该示例需要从公共API请求数据,所以在网络正常连接下并使用HTTP/HTTPS协议时才可以正常工作。”
您是在什么环境下操作的,或者将接口换成您实际用例测试下。
回复 使用道具 举报
icy_fang
注册会员   /  发表于:2017-7-20 17:37:31
板凳
dexteryao 发表于 2017-7-20 17:18
spread view的问题您就发到这里

我没重现您的问题,但是有一点您需要注意“该示例需要从公共API请求数据 ...

非常感谢你的回答,谢谢!ajaxBatch报告异常的问题已找到原因(请见问题描述中绿色字体)。

现在正在尝试在后台获取页面更改过的数据,暂时获取都为null,明天我再试一试。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-20 18:00:22
地板
icy_fang 发表于 2017-7-20 17:37
非常感谢你的回答,谢谢!ajaxBatch报告异常的问题已找到原因(请见问题描述中绿色字体)。

现在正在 ...

/api/records/只是一个模拟后台去数据的地址,没有什么实质性的操作。
回复 使用道具 举报
icy_fang
注册会员   /  发表于:2017-7-21 14:13:38
5#
本帖最后由 icy_fang 于 2017-7-21 14:36 编辑

感谢楼上的回答。
现在出现问题:data传递值为null,请帮忙看下,谢谢。
--------------------------------------------- html code ---------------------------------------------
        function buildRequests(actions) {
            var result = [];
            var i;
            var len;
            var action;
            var actionType;
            var dataItem;
            for (i = 0, len = actions.length; i < len; i++) {
                action = actions;
                actionType = action.type;
                dataItem = action.dataItem;
                if (actionType === 'update') {
                    // 这一段代码可以打印出正确的ID
                    console.log('id = ' + dataItem.ID);
                    result.push({
                        type: 'POST',
                        url: '/Home/TestUpdate',
                        data: { id: dataItem.ID }
                    });

                } else if (actionType === 'delete') {
                    result.push({
                        type: 'DELETE',
                        url: '/api/records/' + dataItem.ID,
                    });

                } else if (actionType === 'create') {
                    result.push({
                        type: 'POST',
                        url: '/api/records',
                        data: dataItem
                    });
                }
            }
            // log 可以打印出来
            // console.log('buildRequests = ' + result[0]);
            return result;
        }

--------------------------------------------- cs code ---------------------------------------------
        /// <summary>
        /// Update (string update_id, string NameCN, string NameEN, string ProvinceCN)
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public JsonResult TestUpdate(string id)
        {
            // id 是null, 此方法可用(已在页面初始化时测试过)
            if (id != null)
            {
                // 更新数据
            }

            return Json(new object(), JsonRequestBehavior.AllowGet);
        }

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-21 16:03:53
6#
icy_fang 发表于 2017-7-21 14:13
感谢楼上的回答。
现在出现问题:data传递值为null,请帮忙看下,谢谢。
------------------------------ ...

您好,spread.views是纯前端的控件,跟后端没有直接关系,传递也是通过您自选的方式(比如ajax传递)来完成,所以这个问题应该不是控件本身的问题,您需要查看您网络传递的请求的信息,来确认具体是哪个环节出现的问题。
回复 使用道具 举报
icy_fang
注册会员   /  发表于:2017-7-21 16:46:48
7#
ClarkPan 发表于 2017-7-21 16:03
您好,spread.views是纯前端的控件,跟后端没有直接关系,传递也是通过您自选的方式(比如ajax传递)来完 ...

感谢您的回复。
问题中参考的例子来自于官网(不太确定是否官网?)如下地址:http://demo.gcpowertools.com.cn/spreadjs/views/#/demos/BatchEdit
并未做关键性或者影响实现的改变,所以能否请求您在示例中的后台代码中捕捉下data值,是否正确被传递。
因为当下我无法定位问题出现在哪里了,请帮忙,谢谢。
另外,是否gc.spread.*.10.1.1.js版本会引出此问题呢?或者是否可以提供gc.spread.*.10.0.0.js的下载地址,以保证本地测试与示例中使用JS版本一致,不好意思,我在论坛中没有找到。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-21 17:12:12
8#
本帖最后由 ClarkPan 于 2017-7-21 17:15 编辑

image.png987371215.png
您好,上图是demo中的方法,这个buildRequests就是创建了一个result数组,然后将至push到了数组中,就是创建了一个容器去存储至,后面使用还是通过ajax去处理的。如下图
image.png547267150.png
您先定位ajax中能否收到传至,然后在看发出去的请求,如果这些都没问题,那就要看您后端的代码逻辑了。这个因为不知道您项目的具体怎么使用所以只能您按照我们说的进行确认了gc.spread.*.10.0.0.js这只是一个实例,因为demo中不确定用户用的是哪个版本,所以统一用0这个泛指所有版本都能使用。
回复 使用道具 举报
icy_fang
注册会员   /  发表于:2017-7-24 15:24:10
9#
ClarkPan 发表于 2017-7-21 17:12
您好,上图是demo中的方法,这个buildRequests就是创建了一个result数组,然后将至push到了数组中,就是 ...

1、关于您的回复
您先定位ajax中能否收到传至,然后在看发出去的请求,
=> 下图是在batchjs.js文件中抓取的数据,是否表示ajax已经接收到了传值呢。(图1)

图1

图1

如果这些都没问题,那就要看您后端的代码逻辑了。
=> 我的问题就是“后端代码接收不到值”,请您再看下5#的回复,后端代码还没有任何处理逻辑的。

这个因为不知道您项目的具体怎么使用所以只能您按照我们说的进行确认了gc.spread.*.10.0.0.js这只是一个实例,因为demo中不确定用户用的是哪个版本,所以统一用0这个泛指所有版本都能使用。
=> 那版本的原因就可以排除了,谢谢。


2、一点疑问:
方法buildRequests中的ajax, 对url的赋值,通过验证,其实是无效的。请参考对比图。

图3

图3

图4

图4



3、一点请求
是否可以请您验证下demo中后端“成功的接收到数据”了。

PS:附代码,标注*************** Changed ****************的部分做过修改。
Demo_Srouce.zip (6.58 KB, 下载次数: 234)
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-7-24 16:31:58
10#
icy_fang 发表于 2017-7-24 15:24
1、关于您的回复
您先定位ajax中能否收到传至,然后在看发出去的请求,
=> 下图是在batchjs.js文件中抓 ...

您好,您能否提供一下您完整的solution,这样我们也能够尽快定位问题。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部