Richard.Ma 发表于 2023-6-2 18:25:59

Spread.Net 的table列头不能设置为CheckBox类型

请问版主:1、Spread.Net 的table列头不能设置为CheckBox类型,SpreadJS是可以设置的是吗?就是这样的。
https://gcdn.grapecity.com.cn/data/attachment/forum/202306/02/123951bt5a5wtaf2ut5u4w.png

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

3、我如何在锁定某行不能编辑的情况下,可以拖动改变列的宽度。    (我使用下面代码可以设置标题行不可编辑,但是列宽也无法拖动改变了。我需要可以拖动改变列宽)
fpSpread1.AsWorkbook().ActiveSheet.UsedRange.Locked = false;
                fpSpread1.ActiveSheet.Rows.Locked = true;            
fpSpread1.ActiveSheet.Protect = true;

Richard.Ma 发表于 2023-6-2 18:26:00

1.是的spreadjs可以支持

2.我看你描述的需求比较多。具体是要保留哪些东西,清除什么呢,如果只是要保留列宽,那么可以用ClearRange方法,清除掉其他内容。

3.。目前spread.NET不支持在保护时设置允许调整列宽的选项。
我看你提到了spreadjs,spreadjs是可以提供这个功能选项的

冰岛 发表于 2023-6-2 18:35:21

好的,谢谢版主

冰岛 发表于 2023-6-5 09:32:37

1、spreadjs可以支持,Spread.Net有方法可以实现列头设置为CheckBox类型吗?

2、我要清除先前设置的多表数据绑定,让他变成没有绑定的状态,以便于让我重新设置多表数据绑定。(目前我的多表数据源有行增加、删除的情况,我是通过重新绑定的方式,显示到Spread中去的,)
3、我需要在锁定某行不能编辑的情况下,可以拖动改变列的宽度,这个Spread.Net可以实现吗?

Richard.Ma 发表于 2023-6-5 14:03:05

1.嗯,spread.net目前没有办法在table的表头设置复选框。如果你不需要table表头的过滤器的话,可以隐藏table真实 表头,添加一个假表头,这样就可以添加复选框了,没有其他更好的办法


2. “数据源有行增加、删除的情况”,那么你要根据数据源新的行数重新设置table的行数,然后再绑定数据

3.如上次给你的回复,这个目前实现不了

冰岛 发表于 2023-6-5 14:51:23

本帖最后由 冰岛 于 2023-6-5 15:09 编辑

Richard.Ma 发表于 2023-6-5 14:03
1.嗯,spread.net目前没有办法在table的表头设置复选框。如果你不需要table表头的过滤器的话,可以隐藏tabl ...
“2. “数据源有行增加、删除的情况”,那么你要根据数据源新的行数重新设置table的行数,然后再绑定数据。”
是的
请问清除数据源的方法是怎么呢?


1、3的需求在以后的版本中会实现吗?

Richard.Ma 发表于 2023-6-5 17:44:31

清除数据源就是把DataSource设置为null即可。

1、3这两个需求暂时还没有明确的开发计划,我可以先提给研发

冰岛 发表于 2023-6-6 09:53:10

Richard.Ma 发表于 2023-6-5 17:44
清除数据源就是把DataSource设置为null即可。

1、3这两个需求暂时还没有明确的开发计划,我可以先提给研 ...


请帮我提一下1、3这两个需求计划。
清除数据源就是把DataSource设置为null即可。我使用了几种方法,以及这几种方法混合使用后。
fpSpread1.AsWorkbook().ActiveSheet.Tables.DataSource = null;
fpSpread1.AsWorkbook().ActiveSheet.Tables.Delete(true);
fpSpread1.AsWorkbook().ActiveSheet.Tables.Unlist();
再去创建 GrapeCity.Spreadsheet.ITable table = TestActiveSheet.Range(nRange).CreateTable(true);都会报错。


我需要的是清除fpSpread1.Sheets中创建过的GrapeCity.Spreadsheet.ITable ,让我可以重新创建GrapeCity.Spreadsheet.ITable 。
谢谢版主。

Richard.Ma 发表于 2023-6-6 16:09:10

嗯,1,3我来提需求

关于问题2,取消绑定和删除table分别用
                table.DataSource=null;
                table.Delete();

冰岛 发表于 2023-6-6 16:28:22

Richard.Ma 发表于 2023-6-6 16:09
嗯,1,3我来提需求

关于问题2,取消绑定和删除table分别用


我使用了几种方法,以及这几种方法混合使用,均无法删除和重新绑定。请版主帮我看看代码,怎么操作可以重新绑定。
fpSpread1.AsWorkbook().ActiveSheet.Tables.DataSource = null;
fpSpread1.AsWorkbook().ActiveSheet.Tables.Delete(true);
fpSpread1.AsWorkbook().ActiveSheet.Tables.Delete();
fpSpread1.AsWorkbook().ActiveSheet.Tables.Unlist();





private void btnSetData2()
      {
            //fpSpread1.AsWorkbook().ActiveSheet.Worksheet.Delete();
            for (var i = 0; i < fpSpread1.AsWorkbook().ActiveSheet.Tables.Count; i++)
            {
                //var tb = fpSpread1.AsWorkbook().ActiveSheet.Tables;
                //tb.Delete();
                //fpSpread1.AsWorkbook().ActiveSheet.Tables.Worksheet.Delete();
                //fpSpread1.AsWorkbook().ActiveSheet.Tables.DataSource = null;
                //fpSpread1.AsWorkbook().ActiveSheet.Tables.Delete(true);
                fpSpread1.AsWorkbook().ActiveSheet.Tables.Delete();
                //fpSpread1.AsWorkbook().ActiveSheet.Tables.Unlist();
            }

            fpSpread1.Sheets.Rows.Visible = false;
            fpSpread1.Sheets.Columns.Visible = false;

            int RowsCount = 1;
            for (int i = 0; i < ds.Tables.Count; i++)
            {
                GrapeCity.Spreadsheet.IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
                //TestActiveSheet.AutoFilterMode = false;

                string nRange = "A" + (RowsCount) + ":G" + (RowsCount + ds.Tables.Rows.Count + 2);

                GrapeCity.Spreadsheet.ITable table = TestActiveSheet.Range(nRange).CreateTable(true);
                table.ShowAutoFilter = false;
                table.AutoGenerateColumns = true;
                table.DataSource = ds.Tables;
                table.Name = i.ToString();            

                RowsCount += ds.Tables.Rows.Count + 1;
                fpSpread1.ActiveSheet.Rows.Visible = true;
                fpSpread1.ActiveSheet.Columns.Columns.Count - 1].Visible = true;

            }            

            FarPoint.Win.Spread.CellType.CheckBoxCellType dateType = new FarPoint.Win.Spread.CellType.CheckBoxCellType();
            fpSpread1.Sheets.Columns.CellType = dateType;
            fpSpread1.ActiveSheet.Columns.Width = 100;
            //fpSpread1.ActiveSheet.Columns.Locked = true;
            //fpSpread1.ActiveSheet.Protect = true;
      }

页: [1] 2
查看完整版本: Spread.Net 的table列头不能设置为CheckBox类型