找回密码
 立即注册

QQ登录

只需一步,快速开始

adong613

论坛元老

6

主题

33

帖子

1万

积分

论坛元老

积分
14246

活字格认证

adong613
论坛元老   /  发表于:2012-7-18 22:54  /   查看:11295  /  回复:19
1.如果这样绑定,fpSpread1.Sheets[0].DataSource = dsRFilter.Tables[0];
.Columns[string Tag] 这里取得的是空值,那我绑定后得给Tag赋值,

for (int cid = 0; cid < fpSpread1.Sheets[0].ColumnCount; cid++)
{ fpSpread1.Sheets[0].Columns[cid].Tag = fpSpread1.Sheets[0].Columns[cid].DataField; }
int rowCount = dsRFilter.Tables[0].Rows.Count + 1;
请问给.Tag赋值有没有简单的方法或属性?

.Columns[int rowid] 个人不喜欢用这个,因为如果列顺序变了,那程序要改不少地方,
我个人喜欢用.Columns[string colName],只可惜fpSpread1没这个属性,datagridview里有

2.ComboBoxCellType cboCell = new ComboBoxCellType();
DataTable dt1 = bRFilter.GetReport().Tables[0];

cboCell 是不是没有DataSource属性,只能把dt1循环变数组,然后用items属性,
for(int rid=0;rid<dt1.Rows.Count;rid++)
{bytReport[rid]=dt1.Rows[rid][0].ToString();}
cboCell.Items = bytReport;
fpSpread1.Sheets[0].Cells[e.Row, e.Column].CellType = cboCell;
请问有没有简单的方法或属性?

3.fpSpread1.Sheets[0].GetPreferredColumnWidth(cid);
这个只能取得列内容格的最大宽度,可是不包括列标头的,如果列标头很长,内容少,列标头就换行了,有没有方法取得列标头和内容格的最大宽度啊?

19 个回复

正序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-27 17:44:00
20#
11、列的宽度可以通过ListResizeColumns来设置,但是不能直接设置某列的宽度;如果ShowColumnHeaders = true,可以拖动改变列的宽度
  1.     DataTable dt = new DataTable();
  2.     dt.Columns.Add("col1");
  3.     dt.Columns.Add("col2");
  4.     dt.Columns.Add("col3");
  5.     dt.Columns.Add("col4");
  6.     dt.Rows.Add(1, 2, 3, 4);
  7.     dt.Rows.Add(1, 2, 3, 4);
  8.     dt.Rows.Add(1, 2, 3, 4444);

  9.     FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType mcb = new FarPoint.Win.Spread.CellType.MultiColumnComboBoxCellType();
  10.     mcb.DataSourceList = dt;
  11.     mcb.DataColumn = 2;
  12.     mcb.ColumnEdit = 2;            
  13.     mcb.ButtonAlign = FarPoint.Win.ButtonAlign.Left;            
  14.     mcb.ListResizeColumns = FarPoint.Win.Spread.CellType.ListResizeColumns.ByDataType;
  15.     mcb.ListAlignment = FarPoint.Win.ListAlignment.Right;
  16.     mcb.ListOffset = 5;
  17.     mcb.MaxDrop = 5;
  18.     mcb.ShowColumnHeaders = true;
  19.     fpSpread1.ActiveSheet.Cells[0, 0].CellType = mcb;
复制代码

12、fpSpread1.ActiveSheet.Columns.Default.Width = 200;
回复 使用道具 举报
adong613
论坛元老   /  发表于:2012-7-27 16:01:00
19#
12,除了一列一列设置列宽,有没有办法设置sheets[0]的默认列宽
回复 使用道具 举报
adong613
论坛元老   /  发表于:2012-7-27 15:25:00
18#
11,MultiColumnComboBoxCellType ,请问能不能像sheet一样,设置列的宽度啊?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-25 11:18:00
17#
9、没有这样的方法,因为Spread中的列是与数据库一一对应的,如果要添加列就得修改数据库中表的结果,所以没有提供这样的方法。
10、可以在修改值之后再一次点击列头进行排序,或者通过代码来排序:fpSpread1.Sheets[0].SortRows(2, true,true);
回复 使用道具 举报
adong613
论坛元老   /  发表于:2012-7-24 22:09:00
16#
10,排了序的字段,因为用代码修改了某些值,怎么用代码再排序,像点击了列标头的排序箭头一样
回复 使用道具 举报
adong613
论坛元老   /  发表于:2012-7-24 21:51:00
15#
9.有没有像AddRowToDataSource一样,把没有绑定的列添加到绑定的数据集中?
回复 使用道具 举报
adong613
论坛元老   /  发表于:2012-7-24 21:49:00
14#
8.问题弄好了,不过找了一下,发现textcelltype有一个设置属性PasswordChar,可以设置的,不过我还是用了你这种方法,因为我要的是显示一个固定的字符串,谢谢了
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-24 15:21:00
13#
回复 10楼adong613的帖子

7、spread提供的过滤方式只有这两种,没有两种方案的结合方案,实在抱歉。
8、你可以用我给的代码片段调试过一下,设置为****应该不影响单元格的Cells[0,0].Value属性
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-7-24 15:19:00
12#
如果没有设置CellType的情况下,value等于text,在设置CellType的情况下,value可以不等于text,text是对value格式化之后的结果,比如你设置了一个数值类型的CellType,value为10000,text可以显示为 10,000等格式。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部