找回密码
 立即注册

QQ登录

只需一步,快速开始

冰岛
注册会员   /  发表于:2023-6-1 09:15:42
11#
感谢版主。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-1 10:44:15
12#

get

本帖最后由 Richard.Ma 于 2023-6-1 10:52 编辑


请参考附件
WindowsFormsApp1.zip (17.56 MB, 下载次数: 1496)
回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-6-1 15:20:20
13#
本帖最后由 冰岛 于 2023-6-1 16:38 编辑

谢谢版主的DEMO,起了很大作用。
再请问版主:当我设置了一次数据源之后,想添加第二个数据时会报错(即点下btnAddData_Click第二次)。代码如下。应该怎么处理呢?

        private void btnAddData_Click(object sender, EventArgs e)
        {
            if (fpSpread1.AsWorkbook().ActiveSheet.Tables.Count <= 0)
            {
                GrapeCity.Spreadsheet.IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
                TestActiveSheet.AutoFilterMode = false;

                GrapeCity.Spreadsheet.ITable table = TestActiveSheet.Range("A1:G2").CreateTable(true);
                table.ShowAutoFilter = false;
                table.AutoGenerateColumns = true;
                table.DataSource = dt;
                fpSpread1.ActiveSheet.Rows[0, dt.Rows.Count].Visible = true;
            }
            else
            {
                int RowsCount = 0;
                for (var i = 0; i < fpSpread1.AsWorkbook().ActiveSheet.Tables.Count; i++)
                {
                    var dt = fpSpread1.AsWorkbook().ActiveSheet.Tables;
                    RowsCount += dt.TableRows.Count;
                }
                RowsCount += fpSpread1.AsWorkbook().ActiveSheet.Tables.Count;
                string nRange = "A" + (RowsCount + 1) + ":G" + (RowsCount + 1);

                GrapeCity.Spreadsheet.IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
                GrapeCity.Spreadsheet.ITable table = TestActiveSheet.Range(nRange).CreateTable(true);
                //table.ShowAutoFilter = false;
                //table.AutoGenerateColumns = true;
                table.DataSource = dt2;
                fpSpread1.ActiveSheet.Rows[0, RowsCount + dt2.Rows.Count - 1].Visible = true;
            }
        }


image.png771805724.png


回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-1 17:54:16
14#
类似这种,上一句实际就已经出错了,创建的table是空的。所有会有下面的错误
原因你可能得自己排查一下。一般都是原来的这个区域有table,所有创建不出来

image.png988277587.png
回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-6-2 11:14:56
15#
本帖最后由 冰岛 于 2023-6-2 11:44 编辑

请问版主:1、确定table列头不能设置为CheckBox类型吗?(即将标题行第一列设置为复选框呢?)

2、我想清除表格里面设置的数据源,不知道应该怎么清除呢?我使用这句代码没起作用。fpSpread1.AsWorkbook().ActiveSheet.ClearCircles
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-2 12:28:07
16#
1.是的, 目前没有办法

2.我发你的代码中有的DataSource=null就行
回复 使用道具 举报
冰岛
注册会员   /  发表于:2023-6-2 13:05:41
17#
本帖最后由 冰岛 于 2023-6-2 14:53 编辑
Richard.Ma 发表于 2023-6-2 12:28
1.是的, 目前没有办法

2.我发你的代码中有的DataSource=null就行

请问版主:1、Spread.Net 的table列头不能设置为CheckBox类型,SpreadJS是可以设置的是吗?就是这样的。
image.png851808166.png

2、我是想清除设置的表格的分组数据源这种,但是不改变列的大小。我目前用的是fpSpread1.Sheets[0] = new SheetView()这种,但这个是每次都是重新一个页面,列的类型,大小都变了。我是想保留当前页,把页面的分组清除了。我可以重新设置分组数据源。
我现在的多DataTable数据源是这样操作的,对DataTable直接进行添加、删除。如果数据行有改变就全部重新绑定。
全部重新绑定的情况下,我又不想改变我做好的模板的列类型。

3、我如何在锁定某行不能编辑的情况下,可以拖动改变列的宽度。    (我使用下面代码可以设置标题行不可编辑,但是列宽也无法拖动改变了。我需要可以拖动改变列宽)
fpSpread1.AsWorkbook().ActiveSheet.UsedRange.Locked = false;
                fpSpread1.ActiveSheet.Rows[0].Locked = true;            
fpSpread1.ActiveSheet.Protect = true;
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-6-2 18:27:12
18#
我重新创建了一个帖子。在新帖中给你回复吧,这个帖子盖楼太多了。
下次也建议每个问题如果没关联的话,单独发帖


https://gcdn.grapecity.com.cn/showtopic-169368-1-1.html
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部