找回密码
 立即注册

QQ登录

只需一步,快速开始

michael

银牌会员

22

主题

57

帖子

3974

积分

银牌会员

积分
3974

活字格认证

michael
银牌会员   /  发表于:2011-11-11 21:26  /   查看:9410  /  回复:16
我用的spread4.0版本 在页面中有一个table里面套了一个spread 把spread的某个单元格设置成数值doublecelltype,并且设置了错误提示信息。
但是当我把spread那列靠右对齐的时候错误提示信息还是在屏幕左边 这是怎么回事啊 请教高手了
页面代码如下:
<table width="100%">
    <tr>
        <td align="right">
            <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="Black"
                BorderStyle="Solid" BorderWidth="1px" Height="200" Width="500">
                <sheets>
                    <FarPoint:SheetView SheetName="Sheet1">
                    </FarPoint:SheetView>
                </sheets>
            </FarPoint:FpSpread>
        </td>
    </tr>
    </table>
后台代码如下:
     DataTable dt = new DataTable();

        dt.Columns.Add("列1");
        dt.Columns.Add("列2");
        dt.Columns.Add("列3");
        dt.Columns.Add("列4");

        DataRow dr = dt.NewRow();
        dr["列1"] = 11.000;
        dr["列2"] = 2;
        dr["列3"] = 3;

        dt.Rows.Add(dr);
        this.FpSpread1.Sheets[0].DataAutoCellTypes = false;

        FpSpread1.DataSource = dt;
        FpSpread1.DataBind();

        FpSpread1.ActiveSheetView.ColumnHeader.RowCount = 2;

        DoubleCellType db = new DoubleCellType();
        db.DecimalDigits = 3;
        db.FixedPoint = true;
        db.ErrorMessage = "err message";

        FpSpread1.ActiveSheetView.Cells[0, 0].CellType = db;
        FpSpread1.ActiveSheetView.Cells[0, 1].CellType = db;
        FpSpread1.ActiveSheetView.Cells[0, 2].CellType = db;
        FpSpread1.ActiveSheetView.Cells[0, 3].CellType = db;

16 个回复

倒序浏览
michael
银牌会员   /  发表于:2011-11-11 21:28:00
沙发

这是截图

error.png (16.14 KB, 下载次数: 569)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-14 11:59:00
板凳
你好,经测试,在 Spread 所在 table 单元格宽度在55%以上情况下,可以在前台设置 FpSpread width = 100%,而 Fpspread 的定位问题可以通过 Table 控制,请参考以下代码:

  1. //css 样式
  2.    <style type="text/css">
  3.         .style1
  4.         {
  5.             width: 44%;
  6.         }
  7.      </style>

  8. //table 设置
  9. <table style="width: 100%;">
  10.             <tr>
  11.                 <td class="style1">
  12.                     &amp;nbsp;
  13.                 </td>
  14.                 <td align="right">
  15.                     &amp;nbsp;
  16.                     <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="Black"
  17.                         BorderStyle="Solid" BorderWidth="1px" Height="200" Width="100%">
  18.                         <CommandBar BackColor="Control" ButtonFaceColor="Control"
  19.                             ButtonHighlightColor="ControlLightLight" ButtonShadowColor="ControlDark">
  20.                         </CommandBar>
  21.                         <Sheets>
  22.                             <FarPoint:SheetView SheetName="Sheet1">
  23.                             </FarPoint:SheetView>
  24.                         </Sheets>
  25.                     </FarPoint:FpSpread>
  26.                 </td>
  27.             </tr>
  28.         </table>
复制代码
效果图:

png

png
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-14 20:27:00
地板
我试了下 是这么回事 但是有问题啊 如果我就是想在页面的右上角布局一个两行两列的spread 这样能实现吗 就是很小的一个spread
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-15 10:30:00
5#
你好,使用 div 布局可以实现该需求,err message 显示位置正常:
CSS 样式:
  1.     <style type="text/css">
  2.         #test  
  3.         {
  4.             position:absolute;
  5.             width:100px;
  6.             height:150px;
  7.             right:0%;
  8.             top:0%;
  9.          }
  10.     </style>
复制代码
div 设置:
  1.     <div id="test">
  2.         <FarPoint:FpSpread ID="FpSpread1" runat="server" BorderColor="Black" BorderStyle="Solid"
  3.             BorderWidth="1px" Height="100%" Width="100%">
  4.             <CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
  5.                 ButtonShadowColor="ControlDark">
  6.             </CommandBar>
  7.             <Sheets>
  8.                 <FarPoint:SheetView SheetName="Sheet1">
  9.                 </FarPoint:SheetView>
  10.             </Sheets>
  11.         </FarPoint:FpSpread>
  12.     </div>
复制代码
效果图:

png

png
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-16 19:35:00
6#
再请教一个问题 提示信息的位置能不能自定义 自己想在什么位置提示就在哪提示
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-17 14:40:00
7#

回复 6# michael 的帖子

Spread 目前不支持该功能,给你带来不便,很抱歉。
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-17 21:43:00
8#
不好意思 这个source是针对这个问题的 发错地方了
http://gcdn.grapecity.com/showtopic-2648.html
  1.         DataTable dt = new DataTable();

  2.         dt.Columns.Add(&quot;列1&quot;);
  3.         dt.Columns.Add(&quot;列2&quot;);
  4.         dt.Columns.Add(&quot;列3&quot;);
  5.         dt.Columns.Add(&quot;列4&quot;);

  6.         DataRow dr = dt.NewRow();
  7.         dr[&quot;列1&quot;] = 11.000;
  8.         dr[&quot;列2&quot;] = 0001;
  9.         dr[&quot;列3&quot;] = 3;

  10.         dt.Rows.Add(dr);
  11.         this.FpSpread1.ActiveSheetView.DataAutoCellTypes = false;
  12.         FpSpread1.DataSource = dt;
  13.         FpSpread1.DataBind();

  14.         FpSpread1.ActiveSheetView.ColumnHeader.RowCount = 2;

  15.         DoubleCellType db = new DoubleCellType();
  16.         db.DecimalDigits = 3;
  17.         db.FixedPoint = true;
  18.         db.ErrorMessage = &quot;err message&quot;;

  19.         TextCellType tc = new TextCellType();
  20.         tc.AllowWrap = true;
  21.         

  22.         FpSpread1.ActiveSheetView.Cells[0, 0].CellType = db;
  23.         FpSpread1.ActiveSheetView.Cells[0, 1].CellType = tc;
  24.         FpSpread1.ActiveSheetView.Cells[0, 2].CellType = db;
  25.         FpSpread1.ActiveSheetView.Cells[0, 3].CellType = db;
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-18 10:52:00
9#

回复 8# michael 的帖子

你好,感谢你的代码片段。
有两种解决办法:
1.修改
  1. dr[&quot;列2&quot;] = 0001;
复制代码
  1. dr[&quot;列2&quot;] = “0001”;
复制代码
2.自定义单元格类型,继承 TextCellType 类型,重载 format 方法,代码如下:
  1.     public class MyCellType : FarPoint.Web.Spread.TextCellType
  2.     {
  3.         public override string Format(object obj)
  4.         {
  5.             string _test = obj.ToString();
  6.             _test = &quot;000&quot; + _test;
  7.             return base.Format(_test);
  8.         }
  9.     }
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-18 19:33:00
10#
可是这样也有问题啊 因为我的Datatable是从数据库中取的 DB中的字段是nvarchar2类型的 在数据库中存的是0001 但是取出来绑定到spread上就变成1了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部