请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

iceman
社区贡献组   /  发表于:2011-11-21 09:53:00
11#

回复 10# michael 的帖子

你好,请问你的 DataTable 从数据库中取出后,nvarchar2 字段存储的数值是 "0001" 形式还是 “1”形式呢?
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-21 12:30:00
12#
在spread上输入0001用cells.value取得的是1
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-21 16:27:00
13#
你好,不好意思,目前没有重现你的问题。
1.请问你使用 8# 的数据结合 9# 的方法问题得到解决了吗?这是我做的 Demo ,请你参考:
2627.zip (2.77 MB, 下载次数: 136)
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-21 22:02:00
14#
不好意思 我问题描述错了 非常抱歉
现在问题是我在单元格上输入了0001 但是FpSpread1.ActiveSheetView.Cells[0, 1].Text;获取的值却是1
现在我想把输入的值存入DB中 DB对应的字段不是数值类型的 所以不能进行数值格式化处理 代码如下
首先在单元格输入0001 但后点击按钮把输入的值赋给文本框 输出的是1

  1.         DataTable dt = new DataTable();

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

  6.         DataRow dr = dt.NewRow();
  7.         dr["列1"] = 11.000;
  8.         dr["列2"] = 0001;
  9.         dr["列3"] = 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 = "err message";

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

  21.         FpSpread1.ActiveSheetView.Cells[0, 0].CellType = db;
  22.         FpSpread1.ActiveSheetView.Cells[0, 1].CellType = tc;
  23.         FpSpread1.ActiveSheetView.Cells[0, 2].CellType = db;
  24.         FpSpread1.ActiveSheetView.Cells[0, 3].CellType = db;

  25.     protected void Button1_Click(object sender, EventArgs e)
  26.     {
  27.         this.txtTest.Text = FpSpread1.ActiveSheetView.Cells[0, 1].Text;
  28.     }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-22 10:36:00
15#

回复 14# michael 的帖子

你好,下面段代码在 “列4” 中输入 “0001” 成功存入 SQL 数据库 Test 表中,字段类型为 nvarchar(50):
注意:
1. 在进行数据存储时,应该指定存储数据类型为 ,DbType.String。
2. dr["列2"] = "0001";如果不以双引号形式赋值 value 将为 “1”。无法进行转化。存储方式见“ FpSpread1_UpdateCommand”。

  1.     protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             DataTable dt = new DataTable();

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

  8.             DataRow dr = dt.NewRow();
  9.             dr["列1"] = 11.000;
  10.             dr["列2"] = "0001";
  11.             dr["列3"] = 3;

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

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

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

  21.             TextCellType tc = new TextCellType();
  22.             tc.AllowWrap = true;

  23.             FpSpread1.ActiveSheetView.Cells[0, 0].CellType = db;
  24.             FpSpread1.ActiveSheetView.Cells[0, 1].CellType = tc;
  25.             FpSpread1.ActiveSheetView.Cells[0, 2].CellType = db;
  26.             FpSpread1.ActiveSheetView.Cells[0, 3].CellType = tc;

  27.         }

  28.         protected void FpSpread1_UpdateCommand(object sender, SpreadCommandEventArgs e)
  29.         {
  30.             SqlDataSource1.InsertCommandType = SqlDataSourceCommandType.Text;
  31.             SqlDataSource1.InsertCommand = "INSERT INTO [test]([test]) VALUES(@insertpara)";
  32.             SqlDataSource1.InsertParameters.Add(new Parameter("insertpara",DbType.String,e.EditValues[3].ToString()));
  33.             SqlDataSource1.Insert();
  34.         }
复制代码
回复 使用道具 举报
michael
银牌会员   /  发表于:2011-11-22 13:34:00
16#

回复 15# iceman 的帖子

为什么我这输入0001,点按钮后取得的是1
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2011-11-22 13:49:00
17#

回复 16# michael 的帖子

如果我们查看 DataTable dt 就会发现,在 Spread 绑定 dt 之前,dt 中 dr["列2"] 值已经由 “0001” 转化成 “1” 了,所以 Spread 绑定 dt 后,单元格的 text 为 “1”。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部