请选择 进入手机版 | 继续访问电脑版
梅梅梅梅
中级会员   /  发表于:2022-11-21 17:25  /   查看:2113  /  回复:8
本帖最后由 Clark.Pan 于 2023-1-10 12:24 编辑

表格第一次加载数据源有2行数据,第二次赋值的时候没有数据了,但是表格里还显示2行空白,怎么让他只显示一行。



现在效果是图一,我想要图二的效果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

8 个回复

Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-21 17:38:36
沙发
同一个模板,通过setdatasource给不同行数的数据时,正常来说table行业会自动调整的,比如这个示例中绑定的table

https://demo.grapecity.com.cn/sp ... able-binding/purejs

不知道你这边绑定数据是怎么做的,我看都是空行,是绑定的空数据吗,还是没有做数据绑定
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-11-21 17:47:37
板凳
Richard.Ma 发表于 2022-11-21 17:38
同一个模板,通过setdatasource给不同行数的数据时,正常来说table行业会自动调整的,比如这个示例中绑定的 ...

我用的 let sorce = new GC.Spread.Sheets.Bindings.CellBindingSource(items)
                                 sheet.setDataSource(sorce)来进行赋值的,因为第二次直接赋值空数组,但是她还是显示2行空,我只想让他显示一行
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-21 18:00:41
地板
嗯,你是把CellBindingSource里面的参数设置为[]了吧,这样设置是错误的,因为空数组里面反而没有和table.bindingPath对应的属性,你需要的是把table.bindingPath设置的这个数据路径中的数据,给一个空数组

还是以刚刚楼上发的示例中的代码为例,

错误的做法,把整个绑定的数据设置为空数组


正确的做法,把和table绑定的这个数据属性设置为空数组

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-11-22 14:15:09
5#
Richard.Ma 发表于 2022-11-21 18:00
嗯,你是把CellBindingSource里面的参数设置为[]了吧,这样设置是错误的,因为空数组里面反而没有和table.b ...

我没太看明白你这个意思。我是后台返回的数据,直接就给赋值的。
let items = JSON.parse(JSON.stringify(data[item]))
                            let table1 = sheet.tables.findByName(tables[0].name)
                            table1.autoGenerateColumns(false);
                            if (items && items.length == 0) {
                                 let sorce = new GC.Spread.Sheets.Bindings.CellBindingSource(items)
                                 sheet.setDataSource(sorce)
                                 return
                            }
                            const columns = tables[0].columns;
                            let newColums = [];
                            columns.forEach(k => {
                                let dataField = k.dataField.match(reg);
                                newColums.push({
                                    field: dataField[dataField.length - 1],//处理之后的字段
                                    dataField: k.dataField//execl中绑定的字段
                                })
                            })
                            let echoData = {}
                            for (let j in items) {
                                echoData[j] = []
                                items[j].forEach(ss => {
                                    let obj = {}
                                    for (let v in ss) {
                                        let field = newColums.filter(kk => {
                                            return kk.field == v
                                        })
                                        if (field && field.length > 0) {
                                            obj[field[0].dataField] = ss[v]
                                        }
                                    }
                                    echoData[j].push(obj)
                                })
                            }
                            let sorce = new GC.Spread.Sheets.Bindings.CellBindingSource(echoData)
                            table1.expandBoundRows(true)
                            sheet.setDataSource(sorce)
                            this.copyTableStyle(sheet,table1)
代码是这样的,您帮我看一下我要怎么改呢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-11-22 15:31:59
6#
你还是上传一个重现问题的demo,我来帮你看一下,这个代码中我没有看到你给table1设置bindingPath,也看不出echoData具体的数据内容,所以没法table1具体是应用了什么数据内容
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-12-7 15:17:00
7#
您好,请问您的问题解决了吗?如果还未解决,建议按照楼上回复,给出一个重新问题的demo,这边帮您具体看下。
回复 使用道具 举报
梅梅梅梅
中级会员   /  发表于:2022-12-26 09:54:48
8#
Ellia.Duan 发表于 2022-12-7 15:17
您好,请问您的问题解决了吗?如果还未解决,建议按照楼上回复,给出一个重新问题的demo,这边帮您具体看下 ...

已经解决了谢谢
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2022-12-26 09:58:52
9#

您的问题解决了就好,那本贴就结贴啦。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部