hutao2023 发表于 2023-11-3 16:14:54

Grid内嵌Chart

页面加载读取的Excel后,能在页面显示的sheet里添加Chart吗

Richard.Ma 发表于 2023-11-3 16:49:39

spreadjs可以的,我听你说的产品应该也是我们的spreadjs控件吧。wijmo要做到这个很麻烦。

你是刚刚才开始评估吗

hutao2023 发表于 2023-11-6 09:58:33

Richard.Ma 发表于 2023-11-3 16:49
spreadjs可以的,我听你说的产品应该也是我们的spreadjs控件吧。wijmo要做到这个很麻烦。

你是刚刚才开 ...

不好意思,回复晚了,我确认了一下,不用sheet里面内嵌图表了。
现有以下问题需要确认一下
1.我用itemFormatter作成一个下拉框后,更改下拉框的初始值,然后点击其它单元格进入编辑模式,此时下拉框的值又会回到初始值,我该如果避免进入编辑模式时值会更改
2.给有下拉框的单元格添加一个change事件,拖动页面滚动条让这个单元格不显示在画面上时,添加的事件会提示无效,是要在添加事件前判断该单元格的visible属性是否为true吗

Richard.Ma 发表于 2023-11-6 14:52:55

1.itemFormatter做下拉框是怎么做的呢,grid可以直接设置Combobox做下拉框的。并不需要用itemFormatter,而且itemFormatter一般也是用来做显示效果的自定义。
https://demo.grapecity.com.cn/wijmo/demos/Grid/Editing/CustomEditors/purejs
下拉框可以参考这里


2.我也不确定你是如何添加的事件。我建议这两个问题你统一上传一个简单的demo上来,我帮你看看

hutao2023 发表于 2023-11-6 15:43:04

Richard.Ma 发表于 2023-11-6 14:52
1.itemFormatter做下拉框是怎么做的呢,grid可以直接设置Combobox做下拉框的。并不需要用itemFormatter,而 ...

1.我看sample里面好像做下拉框只针对整行或整列?我需要的是对excel里面的某个单元格做下拉框。
2.公司用的内部网络,demo上传不了。代码如下:
this.flex.itemFormatter = (panel,r,c,cell) => {
if (panel.cellType === 1) {
    // 设置下拉框
    if(r === 18 && c === 0) {
      cell.innerHTML = '<select><option></option><option>1</option></select>' + cell.innerHTML;
   var cb = cell.firstChild;
   if (cb.visible === true) {
       cb.addEventListener('change', e => {
         this.flex.beginUpdate();
         this.flex.setCellData(r,c,cb.value);
         this.flex.endUpdate();
       });
   }
    }
}
}
另外,在以上的代码中,1的问题还没解决,另外产生了以下的问题:
1.如果我下拉框更换值之后,多点几次下拉框,然后定位到其他单元格内,下拉框会消失,debug发现visible这个属性也消失了。

Richard.Ma 发表于 2023-11-6 18:18:19

本帖最后由 Richard.Ma 于 2023-11-6 18:19 编辑

如果你是把flexgrid(grid)当作excel(sheet)来用的话,后面可能很多功能都不符合要求,不止是目前的需求会有障碍。itemFormatter 事件是在单元格绘制的时候触发的,并不适合用来做单元格显示内容设置之外的事情。否则性能会有问题

grid和sheet有本质区别,

grid是基于行数据(列字段相同),
sheet是基于单元格。所以每个单元格是独立设置的。

根据你的需求,我建议你还是应该使用spreadjs,详细的需求建议你可以留一下联系方式,我们语音沟通一下
页: [1]
查看完整版本: Grid内嵌Chart