Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Gojs中编辑滚动表行中的任何文本时,如何获得行值?

在Gojs中编辑滚动表行中的任何文本时,如何获得行值?
EN

Stack Overflow用户
提问于 2017-07-20 06:10:32
回答 2查看 216关注 0票数 0

我在Gojs用滚动表工作。我已经为我的表设置了属性"editable: true"。现在,假设我在行的任何列中编辑了文本,那么如何获得整行的数据或编辑的文本?如果你知道的话请告诉我。

这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
            var nodeJson;
        var $ = go.GraphObject.make;
        var inputFieldTable = [
            { ID: "001", Name: "Input 1", Text: "Err1" },
            { ID: "002", Name: "Input 2", Text: "Err2" },
            { ID: "003", Name: "Input 3", Text: "Err3" },
            { ID: "004", Name: "Input 4", Text: "Err4" }
        ];

        var outputFieldTable = [
            { ID: "101", Name: "Output 1", Text: "Integer" },
            { ID: "102", Name: "Output 2", Text: "Integer" },
            { ID: "103", Name: "Output 3", Text: "Integer" },
            { ID: "104", Name: "Output 4", Text: "String" },
            { ID: "105", Name: "Output 5", Text: "String" },
            { ID: "106", Name: "Output 6", Text: "Double" }
        ];
        myDiagram =
            $(go.Diagram, "myDiagramDiv",
                {
                    initialContentAlignment: go.Spot.Center,
                    "undoManager.isEnabled": true,
                    allowMove: false,
                    allowDelete: true,
                    allowCopy: false,
                    allowDragOut: false,
                    allowDrop: false
                });

        myDiagram.nodeTemplate =
            $(go.Node, "Vertical",
                {
                    selectionObjectName: "SCROLLING",
                    resizable: false, resizeObjectName: "SCROLLING",
                    portSpreading: go.Node.SpreadingNone
                },
                new go.Binding("location").makeTwoWay(),
                $(go.TextBlock,
                    { font: "bold 14px sans-serif" },
                    new go.Binding("text", "key")),
                $(go.Panel, "Auto",
                    $(go.Shape, { fill: "white" }),
                    $("ScrollingTable",
                        { stretch: go.GraphObject.Fill },
                        new go.Binding("TABLE.itemArray", "items"),
                        new go.Binding("TABLE.column", "left", function (left) { return left ? 2 : 0; }),
                        new go.Binding("desiredSize", "size").makeTwoWay(),
                        {
                            name: "SCROLLING",
                            desiredSize: new go.Size(100, 100),
                            "TABLE.itemTemplate":
                            $(go.Panel, "TableRow",
                                {
                                    defaultStretch: go.GraphObject.Horizontal,
                                    fromSpot: go.Spot.LeftRightSides,
                                    toSpot: go.Spot.LeftRightSides,
                                    fromLinkable: true,
                                    toLinkable: true,
                                },
                                new go.Binding("portId", "Name"),
                                $(go.TextBlock, { column: 1 }, new go.Binding("text", "Name")),
                                $(go.TextBlock, { column: 2 }, new go.Binding("text", "Text"), { editable: true })
                            ),
                            "TABLE.defaultColumnSeparatorStroke": "gray",
                            "TABLE.defaultColumnSeparatorStrokeWidth": 0.5,
                            "TABLE.defaultRowSeparatorStroke": "gray",
                            "TABLE.defaultRowSeparatorStrokeWidth": 0.5,
                            "TABLE.defaultSeparatorPadding": new go.Margin(1, 3, 0, 3)
                        }
                    )
                )
            );

        myDiagram.model = $(go.GraphLinksModel,
            {
                linkFromPortIdProperty: "fromPort",
                linkToPortIdProperty: "toPort",
                nodeDataArray: [
                    {
                        key: "Input", left: true, location: new go.Point(0, 0), size: new go.Size(170, 100),
                        items: inputFieldTable
                    },
                    {
                        key: "Output", location: new go.Point(300, 0), size: new go.Size(170, 100),
                        items: outputFieldTable, editable: true
                    }
                ]
            });

        //Function to handle editing of Scrolling Tables row data
        myDiagram.addDiagramListener("TextEdited",
            function (e) {
               // alert("Text is changed.");
                var part = e.subject.part;                  
                if (part.data.key.toUpperCase() == "INPUT") {
                    myDiagram.rollbackTransaction();
                    return false;
                }
                else if (part.data.key.toUpperCase() == "OUTPUT") {
                    if ((part instanceof go.Node)) {
                        //NEED TO KNOW THE ENTIRE ROW DATA HERE
                    }
                }

            });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-20 09:16:36

您是在询问如何从"TextEdited“侦听器中获取项数据吗?

  • e.subject将被编辑为TextBlock
  • Panel.itemTemplate.中的e.subject.panel将包含面板,这是一个"TableRow“。
  • e.subject.panel.data将是项数据--即该行的数据。

这适用于所有带有itemArrays的面板--而不仅仅是在"ScrollingTable“中。

对于一个TextBlock.editable TextBlock来说,没有一个TwoWay 绑定是有点奇怪的,但是它可以根据您在"TextEdited“侦听器中所做的事情而定。

票数 1
EN

Stack Overflow用户

发布于 2017-07-20 07:16:46

您必须从模型中获取所有的值,方法是调用以下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myDiagram.model.nodeDataArray

然后,您需要遍历这些对象,以确定哪些值发生了更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45217204

复制
相关文章
python 字符串搜索
text = 'yeah, but no, but yeah, but no, but yeah' Search for the location of the first occurrence text.find('no') 10 text = 'Today is 11/27/2012. PyCon starts 3/13/2013.' datepat.findall(text) ['11/27/2012', '3/13/2013'] 或者正则 text1 = '11/27/201
用户5760343
2022/01/10
6090
vim 搜索字符串
按下 Enter 之后,可以看到 vim 已经把光标移动到该字符处和高亮了匹配的字符串
卓越笔记
2023/02/18
7670
vim 搜索字符串_python查找字符串位置
查看搜索历史:history /;搜索模式下,用ctrl-n和ctrl-p快速向前和向后遍历搜索历史。
全栈程序员站长
2022/11/09
2.6K0
Python字符串的匹配和搜索
如果你想匹配或者搜索特定的字段的时候,如果你匹配的是相对比较简单的字符串的时候你只需要利用find()、rfind()、endswitch()、startswitch()等类似的方法即可,示例如下:
后场技术
2020/09/03
1.5K0
字符,字符串,字符编码的区别
字符集和字符编码一般都是成对出现的,如ASCII、IOS-8859-1、GB2312、GBK,都是即表示了字符集又表示了对应的字符编码,以后统称为编码。
袁新栋-jeff.yuan
2020/08/26
1.2K0
通过字符串访问generate模块内部的变量
首先介绍一下generate的用法,generate用于减少verilog的重复语句,批量进行操作。
空白的贝塔
2020/11/26
8270
通过字符串访问generate模块内部的变量
【Groovy】字符串 ( 字符串拼接 | 多行字符串 )
文章目录 一、字符串类型变量 二、多行字符串 三、完整代码示例 一、字符串类型变量 ---- 在双引号字符串中 , 使用 ${变量名} 进行字符串拼接 , ${变量名} 符号的取值 , 是在 定义时取值 ; def s1 = "Hello" def s3 = "${s1} World!!!" s1 = "Hello Groovy" // 修改被拼接的函数值 // 打印的值为 "Hello World!!!" println s3
韩曙亮
2023/03/30
3.1K0
【Groovy】字符串 ( 字符串拼接 | 多行字符串 )
聊一聊字符串内部化
字符串作为一种不可变值类型,在多数的语言里,其底层基本都是个只读的字节数组:一旦被创建,则不可被改写。正是因为其只读特性,如果有大量相同的字符串需要处理,那么在内存中就会保存多份,显然是非常浪费内存的。
poslua
2019/08/21
5600
聊一聊字符串内部化
给定字符串,将字符串的大写字符输出,再将字符串中的小写字符输出。
对字符串的字母进行逐一遍历,然后进行分开拼接,然后再输出。如何对大小写字母进行区别存放的问题我们可以利用ASCII码表进行字符串判断。 具体ASCII码表可自行百度
呆呆
2021/10/06
2K0
FJ的字符串 【字符串模拟】
FJ在沙盘上写了这样一些字符串:  A1 = “A”  A2 = “ABA”  A3 = “ABACABA”  A4 = “ABACABADABACABA”  … …  你能找出其中的规律并写所有的数列AN吗?
Lokinli
2023/03/09
4730
内存字符串暴力搜索定位代码
目录 内存字符串暴力搜索定位代码 1.1 Boyer-Moore实现 1.2 简化版Tuned Boyer-Moore 1.3 KMP 内存字符串暴力搜索定位代码 其它优秀的字符串搜索代码:点击 使用说明: 一般都是四个参数, 参数1: 你要搜索的缓冲区 参数2: 参数1缓冲区的大小 参数3: 要搜索的字符串 参数4: 参数3的缓冲大小 代码实现 search.h #pragma once /* function: Boyer-Moore字符匹配算法 Param: @text 要搜索的缓冲区开始 @
IBinary
2021/09/14
5880
字符与字符串的区别
       看了一下<<C缺陷与陷阱>>中有关字符与字符串的区别的讲解,解决我这方面的疑问,看来对C语言的基础特性了解得还是太浅显了。
ccf19881030
2019/04/23
1.4K0
字符和字符串[通俗易懂]
类型名:char 功能:说明了一个字符数据集合 范围:Pascal语言的字符集。也就是ASCII字符集 表示方法:字符类型中的一个元素表示就是用单引號括起来的一个且仅一个字符。
全栈程序员站长
2022/07/10
7300
字符和字符串[通俗易懂]
JS求字符串中连续字符出现最长的字符串
最长的字母序连续子字符串的长度 字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说,字符串 "abcdefghijklmnopqrstuvwxyz" 的任意子字符串都是 字母序连续字符串 。
剁椒鱼鳞
2023/05/23
1.3K0
JS求字符串中连续字符出现最长的字符串
Python字符串的转义字符
字符串的转义字符 什么是转义字符 字符要转成其他含义的功能,所以我们叫他转义字符 \ + 字符 Python中的转义字符 符号 说明 \n 换行,一般用于末尾,strip对其也有效 \t 横向制表符(可以认为是一个间隔符) \v 纵向制表符(会有一个男性符号) \a 响铃 \b 退格符,将光标前移,覆盖(删除前一个) \r 回车 \f 翻页(几乎用不到,会出现一个女性符号) \' 转义字符串中的单引号 \'' 转义字符中的双引号 \\ 转义斜杠 转义无效符 在python中 在字符串前加 r 来将当
Zkeq
2022/05/18
1.6K0
Tcl的字符串操作:比较字符串
在Tcl中,可利用stringcompare命令对字符串进行比较。该命令需要接收两个字符串参数。如果第一个字符串在字典中先于第二个字符串,返回-1;如果第一个字符串在字典中后于第二个字符串,返回1,如果两者相同,返回0,如下图所示。
Lauren的FPGA
2019/10/31
2.8K0
字符串之字符串哈希
Hash 函数有助于解决很多问题,如果我们想有效地解决比较字符串的问题,最朴素的办法是直接比较两个字符串,这样做的时间复杂度是
EmoryHuang
2022/10/31
8800
见微知著 —— Redis 字符串内部结构源码分析
继上篇讲解了字典的内部结构 之后,本篇我们开始讲字典 key 的内部结构,也就是 sds 字符串。首先它不是普通字符串,而是 sds 字符串,这个 sds 的意思是「Simple Dynamic String」,它的结构很简单,它是动态的,意味着可以支持修改。不过即使是这样简单的字符串结构,在结构设计上作者可是煞费苦心。
老钱
2018/09/29
5470
见微知著 —— Redis 字符串内部结构源码分析
【Python】字符串 str ① ( 字符串 - 数据容器 | 字符串定义 | 使用下标索引访问字符串 | 字符串不可修改 )
字符串定义 就是 在 双引号 中 写入任意数量的 字符 , 如 : “Hello” ;
韩曙亮
2023/10/11
2280
【Python】字符串 str ① ( 字符串 - 数据容器 | 字符串定义 | 使用下标索引访问字符串 | 字符串不可修改 )
点击加载更多

相似问题

不一致的字符串错误

10

边界与内部或外部css不一致,但与内联css一致

15

为什么搜索n个空格字符的字符串返回不一致的结果?

11

打印字符串不一致

21

Php:字符串索引不一致?

35
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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