首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >记住在Kendo-UI中刷新时展开的详细信息网格

记住在Kendo-UI中刷新时展开的详细信息网格
EN

Stack Overflow用户
提问于 2012-08-23 15:42:33
回答 4查看 11.3K关注 0票数 2

我有一个使用detailInit方法在网格中实现网格的场景。在这里,当用户进行编辑时,我进行了一些计算,这些计算将更改父元素和子元素中的数据。然后为了刷新数据,我将调用datasource.read来呈现数据。这是工作和数据显示,但任何细节网格是展开将被折叠,有没有任何方法,我可以防止这种情况发生。

EN

回答 4

Stack Overflow用户

发布于 2014-02-19 17:57:28

要回答这个和另一个问题:

“我想出了如何从子元素中设置主表中的数据,但是,当任何内容更新时,整个表会折叠子表网格,这是一个非常恼人的行为,我可以只更新主表中的一个字段,而不折叠所有的子元素吗?(基本上是更新列,而不是大量更新表)”

在另一个线程中:telerik

这是Kendo Grid极其恼人的行为,也是一个主要的bug。从什么时候开始,一个人希望子网格消失并隐藏刚刚所做的更改!但这并不是唯一的问题;change函数会被调用斐波纳契数次,这会在大量点击后冻结浏览器。话虽如此,以下是我提出的解决方案:

在主网格中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $('#' + grid_id).kendoGrid({
     width: 800, 
     ...
     detailExpand: function (e) {
         var grid = $('#' + grid_id).data("kendoGrid");
         var selItem = grid.select();
         var eid = $(selItem).closest("tr.k-master-row").attr('data-uid')
         if (contains(expandedItemIDs, eid) == false)
              expandedItemIDs.push(eid);
 },
 detailCollapse: function (e) {
    var grid = $('#' + grid_id).data("kendoGrid");
    var selItem = grid.select();
    var eid = $(selItem).closest("tr.k-master-row").attr('data-uid')
    for (var i = 0; i < expandedItemIDs.length; i++)
        if (expandedItemIDs[i] == eid) 
            gridDataMap.expandedItemIDs.splice(i, 1);
},

不幸的是,在全球范围内,我们有:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function subgridChange() {
      var grid = $('#' + grid_id).data("kendoGrid");
      for (var i = 0; i < expandedItemIDs.length; i++)
       grid.expandRow("tr[data-uid='" + expandedItemIDs[i] + "']");
}
function contains(a, obj) {
   for (var i = 0; i < a.length; i++) 
       if (a[i] === obj)  return true;
   return false;
}
expandedItemIDs = [];

现在,每次对子网格进行更改时,都需要调用'subgridChange()‘函数。

问题是,每次调用change时,子网格中的change函数被调用的次数呈指数增长。Kendo网格应该能够调用停止传播函数来防止这种情况,或者至少允许程序员访问事件对象,以便程序员可以阻止传播。在完全恼火之后,我们所要做的就是将'subgridChange()‘函数放在子网格的’数据源‘中,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataSource: function (e) {
    var ds = new kendo.data.DataSource({
        ...
        create: false,
        schema: {
            model: {
                ...
            }
        },

        change: function (e) {
            subgridChange();
        }
    });
    return ds;
}

我还必须将'subgridChange()‘函数放在Add按钮函数中,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('<div id="' + gridID + '" data-bind="source: prodRegs" />').appendTo(e.detailCell).kendoGrid({
      selectable: true,
      ...
      toolbar: [{ template: "<a class='k-button addBtn' href='javascript://'><span class='k-icon  k-add' ></span> Add Product and Region</a>" }]
});

$('.addBtn').click(function (event) {
    ...
    subgridChange();
});
票数 5
EN

Stack Overflow用户

发布于 2012-08-28 02:10:38

当用户选择一行时,记录所选行的索引。然后,在数据刷新之后,使用以下代码展开行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// get a reference to the grid widget
var grid = $("#grid").data("kendoGrid");
// expands first master row
grid.expandRow(grid.tbody.find(">tr.k-master-row:nth-child(1)"));

要展开不同的行,只需将nth-child()选择器中的数字更改为要展开的行的索引即可。

票数 2
EN

Stack Overflow用户

发布于 2014-02-19 19:08:27

实际上,所需要的只是主网格'dataBound‘函数中的'subgridChange()’函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $('#' + grid_id).kendoGrid({
      ...
      dataBound: function (e) {
          gridDataMap.subgridChange();
      }
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12095392

复制
相关文章
如何检测一个元素是否在 vector 中
可以使用头文件 <algorithm> 里的方法 std::find, #include <algorithm> #include <vector> vector<int> vec; if (std::find(vec.begin(), vec.end(), item) != vec.end()) do_this(); else do_that();
ClearSeve
2022/02/10
1.9K0
如何检测本页中的iframe是否“加载”完成
这其实是上一篇"iframe框架取值兼容ie/firefox/chrome的写法"的扩展应用: 应用场景:iframe个人感觉最独特的应用之一就是配合P3P协议可以实现跨域写入cookie(好象除此之外,还没找到更有效的办法),但是有时候我们不知道这个iframe页面是否执行完毕,有没有办法判断iframe里的页面是否load完成了呢? iframe1.html: <html> <head> <title>框架内页</title> </head> <body> <div> <input id="txt
菩提树下的杨过
2018/01/23
3.6K0
在bash中检测进程是否正在运行
比如我们启动了一个这样的进程python -m SimpleHTTPServer 8000,我们想检测这个进程是否存在,可以这样。
技术小黑屋
2018/09/04
3.5K0
如何使iOS后台运行代码
最近在开发一个关于校园的项目,其中有这么一个需求:学生晚上8:00第一次打完卡后在当天夜晚11:00时需要再一次上传学生当前地理位置,判断是否还在宿舍(MMP防不胜防)。但是最后一次上传是不需要学生操作的,APP默默的执行。
用户6094182
2019/08/23
1.8K0
如何使iOS后台运行代码
iOS 检测手机是否安装SIM卡
[CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted]
大师级码师
2021/10/29
1.7K0
iOS检测是否有网络连接
如果你的工程里面是用的AFNetworking请求网络数据的话,那么可以直接使用 AFNetworkReachabilityManager.h来判断网络状态!如果是用的ASI的话,里面自带的有Reachability.m和 Reachability.h这两个类,下面会分开介绍这两个的使用方法。
用户7705674
2021/10/29
1.6K0
Android 检测坐标是否在国内
根据ZCChinaLocation 来实现的相关代码,其实就是这个oc代码的java版本,最近用到了这么个东西所以就给实现了一下。由于我是一个非专业Java程序员,因而代码写的比较糟糕,有什么不周到的地方还希望大家积极补充。
obaby
2023/02/23
7580
如何检测node中是否存在内存泄露的隐患
虽然是在节假日期间,但是果然自己还是闲不住,不折腾点东西感觉生活就失去了趣味,闲话不多说,直接开始这次的记录和分享吧。
凌虚
2020/07/17
4.2K0
在DragonOS中,使蜂鸣器发声
很简单,代码如下: void beep(uint64_t times) { io_out8(0x43, 182&0xff); io_out8(0x42, 2280&0xff); io_out8(0x42, (2280>>8)&0xff); uint32_t x = io_in8(0x61)&0xff; x |= 3; io_out8(0x61, x&0xff); times *= 10000; for(uint64_t i=0;i<times
灯珑LoGin
2022/10/31
4110
iOS 私有 API 调用检测机制探讨
最近发现部分 App 以字符串拼接的方法调用私有 API,在提交 AppStore 审核后被发现打回修改的案例。
刘笑江
2018/05/28
3.2K1
安卓9.0将限制应用程序访问,Android SDK中未记录的API
日前,一位来自XDA的开发者表示,其在AOSP(安卓开放源代码项目)中最近的一个提交报告中发现,谷歌可能会在安卓9.0中采用更加严格的API访问权限,限制应用程序访问Android SDK中未记录的A
BestSDK
2018/03/02
1.5K0
安卓9.0将限制应用程序访问,Android SDK中未记录的API
imagesLoaded – 检测网页中的图片是否加载
imagesLoaded 是一个用于来检测网页中的图片是否载入完成的 JavaScript 工具库。支持回调的获取图片加载的进度,还可以绑定自定义事件。可以结合 jQuery、RequireJS 使用。
李维亮
2021/07/09
1.7K0
linux中是谁占用了我的端口
Address already in use这个提示,想必大家遇到过,怎么能快速找到问题并解决呢?下面有几种姿势可以了解一下. 在对网络连接或特定于应用程序的问题进行故障排除时,首先要检查的事情之一应
入门笔记
2022/06/02
1.5K0
在 jQuery 中如何判断对象是否存在
如果是下面的 jQuery 代码判断一个对象是否存在,是不能用的。 if($("#id")){ }else{} 因为 $("#id") 不管对象是否存在都会返回 object 。 正确使用判断对象是否存在应该用: if($("#id").length>0){}else{} 使用 jQuery 对象的属性 length 来判断,如果 > 0 就存在。 或者 if($("#id")[0]){} else {} 或者直接使用原生的 Javascript 代码来判断: if(document.getElement
Denis
2023/04/15
3.2K0
如何使程序在Linux后台运行
这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:
阿凡亮
2020/04/14
8.8K0
用了这个插件,我在 VSCode 谈恋爱了
也许有了这款插件你就能找到这样子的女朋友了。 事情到底是怎么样子的呢?最近看到别人发了一款交友的软件( VSCode 插件)。 看着这个熟悉的动画... 这不就是探探的那个交互动画嘛。好家伙,有点东西
秋风的笔记
2020/12/18
5920
用了这个插件,我在 VSCode 谈恋爱了
在PHP中检测一个类是否可以被foreach遍历
在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历。那么类呢?我们要如何知道这个类是否可以通过 foreach 来进行遍历呢?其实,PHP已经为我们提供了一个现成的接口。
硬核项目经理
2020/06/04
2K0
在Java中如何高效判断数组中是否包含某个元素
原文地址:http://www.hollischuang.com/archives/1269
Java后端技术
2018/08/09
5.2K0
在C中,如何知道动态分配是否成功
C语言使用 malloc函数动态在堆上分配内存。malloc根据字节数的参数。如果无法分配内存,该函数将返回指向已分配内存的指针或 NULL 指针。
mariolu
2021/11/06
2.7K0
LeakCanary- 如何检测 Activity 是否泄漏
为了将 LeakCanary 引入到我们的项目里,我们只需要做以下两步:(温馨提示:以下代码可以左右滑动查看)
开发者技术前线
2020/11/23
1.4K0
LeakCanary- 如何检测 Activity 是否泄漏

相似问题

如何检测IOS应用中是否使用了某个库

17

iOS Voiceover -检测是否在转子上启用了垂直导航?

16

通过编程检测是否启用了iOS通行码

310

如何检测是否在我的网站上启用了黑暗模式?

14

检测iPad上的蓝牙是否启用了iOS 7

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文