找回密码
 立即注册

QQ登录

只需一步,快速开始

暗影忍者

中级会员

2

主题

5

帖子

820

积分

中级会员

积分
820

活字格认证

最新发帖
产品版本:SPREAD for .NET 7.0
产品模块:SPREAD for ASP.NET 7.0J(7.0.4001.2010)(初版)
操作系统:WIN7
IDE:VS2010
问题描述:我在定义了一个DataSet然后将其绑定在SPREAD上之后,发现原本CellType为SpCheckBox和SpComboBox等类型的列全部变成了像SpString那样子的列,是不是我的列数据类型设置错误了?
这些列对应的数据类型应该是怎样的?
以CheckBox为例,我试过Boolean, Int32, System.Web.UI.CheckBox, Object等,均无法将其变回CheckBoxColumn。

请把下面列的对应的DataTable中的数据类型告知一下,谢谢。

CheckBox      -->  
ComboBox    -->
Button          -->

请指教,在线等,谢谢。

3 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-12-10 13:45:00
沙发
回复 1楼暗影忍者的帖子

请参考以下代码设置 Combo 和 CheckBox 单元格类型:

  1.     protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         if (!IsPostBack)
  4.         {
  5.             GetSelect();
  6.         }
  7.     }

  8.     //查询数据
  9.     public void GetSelect()
  10.     {
  11.         FpSpread1.Height = 330;
  12.         FpSpread1.Width = 1024;
  13.         FpSpread1.Sheets[0].ColumnCount = 5;
  14.         FpSpread1.Sheets[0].RowCount = 100;


  15.         //DataSet ds = testServer.CrystalServer();
  16.         DataSet ds = GetSpreadDateSource();
  17.         FpSpread1.DataSource = ds;
  18.         FpSpread1.DataBind();

  19.         FpSpread1.Sheets[0].Columns[0].DataField = "aid";
  20.         FpSpread1.Sheets[0].Columns[1].DataField = "username";
  21.         FpSpread1.Sheets[0].Columns[2].DataField = "password";
  22.         FpSpread1.Sheets[0].Columns[3].DataField = "sex";
  23.         FpSpread1.Sheets[0].Columns[4].DataField = "phone";
  24.         FpSpread1.Sheets[0].Columns[5].DataField = "state";

  25.         //FpSpread1.Sheets[0].Cells[1, 1].Text = "80726116";
  26.         //type 设置下拉框
  27.         //DataSet dsType = testServer.SelUserType();

  28.         FarPoint.Web.Spread.ComboBoxCellType cb = new FarPoint.Web.Spread.ComboBoxCellType();
  29.         cb.AllowWrap = true;
  30.         cb.DataSource = ds;
  31.         cb.ShowButton = true;
  32.         cb.DataTextField = "sex";
  33.         cb.DataValueField = "sex";
  34.         cb.UseValue = true;
  35.         cb.AutoPostBack = true;
  36.         FpSpread1.ActiveSheetView.Columns[3].CellType = cb;


  37.         //Tax and Cleared 设置单选框
  38.         FarPoint.Web.Spread.CheckBoxCellType ck = new FarPoint.Web.Spread.CheckBoxCellType();
  39.         ck.AutoPostBack = true;
  40.     }

  41.     private DataSet GetSpreadDateSource()
  42.     {
  43.         DataSet ds = new DataSet();
  44.         DataTable dt = new DataTable();
  45.         dt.Columns.Add("aid");
  46.         dt.Columns.Add("username");
  47.         dt.Columns.Add("password");
  48.         dt.Columns.Add("sex");
  49.         dt.Columns.Add("phone");
  50.         dt.Columns.Add("state",typeof(System.Boolean));

  51.         dt.Rows.Add("11", "simith", "******", "男", "14784585954", true);
  52.         dt.Rows.Add("11", "simith", "******", "男", "14784585954", true);
  53.         dt.Rows.Add("11", "simith", "******", "女", "14784585954", false);
  54.         dt.Rows.Add("11", "simith", "******", "男", "14784585954", true);
  55.         dt.Rows.Add("11", "simith", "******", "女", "14784585954", false);

  56.         ds.Tables.Add(dt);
  57.         return ds;
  58.     }
复制代码

CheckBox      -->  对应为 Bool
ComboBox    -->无,需要自己组织数据源设置
Button          -->无,需要绑定后,手动设置
回复 使用道具 举报
暗影忍者
中级会员   /  发表于:2013-12-10 18:02:00
板凳
回复 2楼iceman的帖子

换句话说,就是定义DataTable的时候,不要给具体的列指定类型?只需要在SPREAD上画好CellType就可以了?
唔……我们用的是一些DTO,所以需要映射到Table上再直接绑到SPREAD的上,所以会有这样比较麻烦的事情……好吧,我再看看吧……这个帖子结了吧…………
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-10 18:22:00
地板
回复 3楼暗影忍者的帖子

如果数据库字段是 bool 类型,那么 Spread ,可以自动转换。其他图形化单元格类型,例如 button combobox 等是要设置数据源之后再指定。之前给你发的 Demo 就是这样做的。
呵呵,好的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部