找回密码
 立即注册

QQ登录

只需一步,快速开始

孤月_2022

注册会员

6

主题

39

帖子

105

积分

注册会员

积分
105
孤月_2022
注册会员   /  发表于:2023-7-19 10:10  /   查看:5006  /  回复:11
5金币
代码如下:
aspx页面:





<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm4.aspx.vb" Inherits="WebApplication1.WebForm4" %>
<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" BorderStyle="Solid" BorderWidth="1px" Height="300" Width="600">
                <CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight" ButtonShadowColor="ControlDark"></CommandBar>
                <Sheets>
                    <FarPoint:SheetView SheetName="Sheet1"></FarPoint:SheetView>
                </Sheets>
            </FarPoint:FpSpread>
            <asp:Button ID="Button1" runat="server" Text="Sort" />
        </div>
    </form>
</body>
</html>




后台代码:

Imports FarPoint.Web.Spread
Public Class WebForm4
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load


        If Not IsPostBack Then
            FpSpread1.Sheets(0).RowCount = 6
            FpSpread1.Sheets(0).Columns(0).Width = 150
            FpSpread1.Sheets(0).Columns(2).Width = 200


            FpSpread1.Sheets(0).Cells(0, 0).Value = 150
            FpSpread1.Sheets(0).Cells(1, 0).Value = 510
            FpSpread1.Sheets(0).Cells(2, 0).Value = 250
            FpSpread1.Sheets(0).Cells(3, 0).Value = 50
            FpSpread1.Sheets(0).Cells(4, 0).Value = 250
            FpSpread1.Sheets(0).Cells(5, 0).Value = 290


            FpSpread1.Sheets(0).AddRows(6, 1)


            Dim Formula As String = "SUM(A1:A2)"
            FpSpread1.Sheets(0).Cells(6, 0).Formula = Formula


            FpSpread1.Sheets(0).Rows(6).BackColor = System.Drawing.Color.LightSkyBlue
            FpSpread1.Sheets(0).SetText(6, 2, "第1-2行合计")
        End If
    End Sub


    Protected Sub Button1_Click(sender As Object, e As EventArgs)
        FpSpread1.ActiveSheetView.AllowSort = True
        ' 排序做成
        Dim sinfo As FarPoint.Web.Spread.SortInfo() = New FarPoint.Web.Spread.SortInfo(0) {}
        sinfo(0) = New SortInfo(0, True)
        FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount - 1, sinfo)
    End Sub
End Class



画面效果:第七行单元格内容是"SUM(A1:A2)"
image.png291398314.png
Sort按钮按下:第七行单元格内容没有变化
image.png380434264.png

最佳答案

查看完整内容

问题可以重现,SortRows会改变原有的行顺序,行顺序变了以后,这个公式单元格引用的单元格位置会发生变化。计算结果确实有问题。在最后的版本中也能重现。 由于webform版本目前已经停止维护,暂时没有什么好的解决方案,或者你也可以再和日本葡萄城确认一下日文版是否有其他的解决方案 如果项目条件允许,建议使用spreadjs替换spread webform ,这个产品目前在正常更新。也有日文资源包,可以显示日文文化和语言。

11 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-19 10:10:40
来自 10#
问题可以重现,SortRows会改变原有的行顺序,行顺序变了以后,这个公式单元格引用的单元格位置会发生变化。计算结果确实有问题。在最后的版本中也能重现。
由于webform版本目前已经停止维护,暂时没有什么好的解决方案,或者你也可以再和日本葡萄城确认一下日文版是否有其他的解决方案

如果项目条件允许,建议使用spreadjs替换spread webform ,这个产品目前在正常更新。也有日文资源包,可以显示日文文化和语言。

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-19 18:16:09
2#
日文产品目前没有资源来提供问题验证。

建议通过日本葡萄城来获取技术支持
https://www.grapecity.co.jp/developer/support
回复 使用道具 举报
孤月_2022
注册会员   /  发表于:2023-7-20 15:52:09
3#
Richard.Ma 发表于 2023-7-19 18:16
日文产品目前没有资源来提供问题验证。

建议通过日本葡萄城来获取技术支持

我试了一下英文版的是一样的效果,不知道有啥解决的办法
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-20 18:19:13
4#
孤月_2022 发表于 2023-7-20 15:52
我试了一下英文版的是一样的效果,不知道有啥解决的办法

方便的话,请上传一个重现问题的demo,我帮你看看有没有什么解决办法,

如果是产品的bug,可能比较难修复了,因为本身已经停止更新
回复 使用道具 举报
孤月_2022
注册会员   /  发表于:2023-7-21 14:21:52
5#
Richard.Ma 发表于 2023-7-20 18:19
方便的话,请上传一个重现问题的demo,我帮你看看有没有什么解决办法,

如果是产品的bug,可能比较难 ...


英文版代码如下,效果和一楼的一样,我这demo上传不上去,只能贴代码了
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm4.aspx.vb" Inherits="WebApplication1.WebForm4" %>
<%@ Register Assembly="FarPoint.Web.Spread" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="#A0A0A0" BorderStyle="Solid" BorderWidth="1px" Height="300" Width="600">
                <CommandBar BackColor="#F6F6F6" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight" ButtonShadowColor="ControlDark"></CommandBar>
                <Sheets>
                    <FarPoint:SheetView SheetName="Sheet1"></FarPoint:SheetView>
                </Sheets>
            </FarPoint:FpSpread>
            <asp:Button ID="Button1" runat="server" Text="Sort" />
        </div>
    </form>
</body>
</html>




后台代码:

Imports FarPoint.Web.Spread
Public Class WebForm4
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load


        If Not IsPostBack Then
            FpSpread1.Sheets(0).RowCount = 6
            FpSpread1.Sheets(0).Columns(0).Width = 150
            FpSpread1.Sheets(0).Columns(2).Width = 200


            FpSpread1.Sheets(0).Cells(0, 0).Value = 150
            FpSpread1.Sheets(0).Cells(1, 0).Value = 510
            FpSpread1.Sheets(0).Cells(2, 0).Value = 250
            FpSpread1.Sheets(0).Cells(3, 0).Value = 50
            FpSpread1.Sheets(0).Cells(4, 0).Value = 250
            FpSpread1.Sheets(0).Cells(5, 0).Value = 290


            FpSpread1.Sheets(0).AddRows(6, 1)


            Dim Formula As String = "SUM(A1:A2)"
            FpSpread1.Sheets(0).Cells(6, 0).Formula = Formula


            FpSpread1.Sheets(0).Rows(6).BackColor = System.Drawing.Color.LightSkyBlue
            FpSpread1.Sheets(0).SetText(6, 2, "第1-2行合计")
        End If
    End Sub


    Protected Sub Button1_Click(sender As Object, e As EventArgs)
        FpSpread1.ActiveSheetView.AllowSort = True
        ' 排序做成
        Dim sinfo As FarPoint.Web.Spread.SortInfo() = New FarPoint.Web.Spread.SortInfo(0) {}
        sinfo(0) = New SortInfo(0, True)
        FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount - 1, sinfo)
    End Sub
End Class
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-21 18:44:16
6#
收到,验证后给你回复
回复 使用道具 举报
孤月_2022
注册会员   /  发表于:2023-7-24 15:52:54
7#
Richard.Ma 发表于 2023-7-21 18:44
收到,验证后给你回复

哈喽,老师,验证好了吗
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-7-24 22:01:16
8#
你好,我在当前版本测试未发现你说的问题,建议升级版本看看

测试代码仅在空的spread上添加了这些代码

  1.     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.         FpSpread1.ActiveSheetView.Cells(2, 2).Formula = "Sum(A1:A2)"
  3.         FpSpread1.ActiveSheetView.Cells(0, 0).Value = 12
  4.         FpSpread1.ActiveSheetView.Cells(1, 0).Value = 23


  5.     End Sub
复制代码



image.png996797485.png

不管是代码还是ui更新都是正常的
回复 使用道具 举报
孤月_2022
注册会员   /  发表于:2023-7-25 09:26:58
9#
本帖最后由 孤月_2022 于 2023-7-25 09:56 编辑
Richard.Ma 发表于 2023-7-24 22:01
你好,我在当前版本测试未发现你说的问题,建议升级版本看看

测试代码仅在空的spread上添加了这些代码

你这个是写成固定的了吗,可以多写几行内容,sum前两行的数字,通过画面的按钮去排序Spread,再看sum的数字有没有变化


Protected Sub Button1_Click(sender As Object, e As EventArgs)
        FpSpread1.ActiveSheetView.AllowSort = True
        ' 排序做成
        Dim sinfo As FarPoint.Web.Spread.SortInfo() = New FarPoint.Web.Spread.SortInfo(0) {}
        sinfo(0) = New SortInfo(0, True)
        FpSpread1.ActiveSheetView.SortRows(0, FpSpread1.ActiveSheetView.RowCount - 1, sinfo)
    End Sub
我是单独写了个按钮去排序,调用的还是spread的Sort功能,麻烦试一下我这种实现方法可以正常自动计算sum的值吗
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部