Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🤔如何实现一种稳定的行选择状态?比如只有双击才选中,点击空白处或发生随意单击时不会消失的那种? #2058

Closed
2 tasks done
wangwufan opened this issue Jan 28, 2023 · 2 comments
Labels
❔question 疑问/使用问题

Comments

@wangwufan
Copy link

wangwufan commented Jan 28, 2023

🏷 Version

Package Version
@antv/s2 1.40 .0
@antv/s2-react 1.35.0

Sheet Type

  • PivotSheet
  • TableSheet

🖋 Description

有这样一种场景,困扰我们很久,我想请教老师们,我应该如何去做:我的表格可能是明细表或者透视表的一种,在双击表格某一行或一个单元格时,当前行的颜色或其他可视状态发生变化(用于区别其他行),只有在双击其他行时,这种可视状态才会切换到新的行,并且原来的行恢复原状(数据分析有关的渲染也都恢复原样),即,我想实现一种稳定的行选择状态,不会因为鼠标单击或点击空白处而消失,最好能有复选框或单选框,或者其他的标记(比如行头的手指或箭头图标啥的),因为这个选中状态的稳定性很重要,它决定了另一个与该表格互动的元素的状态显示。
我们既需要s2的数据分析表现力,也需要普通表格的基础操作功能,请老师给些建议,我应该在哪里写什么样的代码?

🔗 Reproduce Link

这是一个需求请求,不是bug,我没法在线提供demo;

😊 Expected Behavior

😅 Current Behavior

@wangwufan wangwufan added the ❔question 疑问/使用问题 label Jan 28, 2023
@github-actions
Copy link
Contributor

你好 @wangwufan,请编辑你的 issue 标题, 一个言简意赅的 issue 标题可以节省大家的时间, 请不要将标题当做正文, 或者为空。

Hello, @wangwufan, please edit your issue title. a concise issue title will save everyone time. please do not leave the title as the body or empty.

@wangwufan wangwufan changed the title 🤔 🤔如何实现一种稳定的行选择状态?比如只有双击才选中,点击空白处或发生随意单击时不会消失的那种? Jan 28, 2023
@lijinke666
Copy link
Member

一大坨文字, 说实话有点抽象, 没有设计稿, 产品原型之类的吗

不会因为鼠标单击或点击空白处而消失

关闭 autoResetSheetStyle, 这样点击空白处, 或者按 esc 就不会重置交互, 文档已经说得很清楚了 https://s2.antv.antgroup.com/manual/advanced/interaction/basic#%E9%87%8D%E7%BD%AE%E4%BA%A4%E4%BA%92

    const s2Options = {
      interaction: {
        autoResetSheetStyle: false
      }
    };

只有在双击其他行时,这种可视状态才会切换到新的行

可以自定义交互, 监听对应的双击事件即可, 请看相关文档, S2 提供了完整的 S2Event, 参考这个 https://s2.antv.antgroup.com/zh/examples/interaction/custom/#double-click-hide-columns
https://s2.antv.antgroup.com/api/general/s2-event

在双击表格某一行或一个单元格时,当前行的颜色或其他可视状态发生变化

你可以再自定义交互的基础上, 在双击的时候调用 s2.interaction 提供的一系列方法, 把对应的单元格置为选中状态即可 https://s2.antv.antgroup.com/api/basic-class/interaction

如果想选中行列头单元格, s2.interaction.selectHeaderCell()

const success = interaction.selectHeaderCell({
cell,
isMultiSelection,
});

如果想选中数值单元格, 将对应的单元格置为选中状态即可, 你可以参考下源码实现:

  s2.interaction.changeState({
    cells: [...],
    stateName: InteractionStateName.SELECTED,
  });

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
❔question 疑问/使用问题
Projects
None yet
Development

No branches or pull requests

2 participants