找回密码
 立即注册

QQ登录

只需一步,快速开始

seaman

初级会员

6

主题

12

帖子

420

积分

初级会员

积分
420

活字格认证

seaman
初级会员   /  发表于:2013-7-30 11:12  /   查看:6636  /  回复:5
因为数据源格式比较复杂,不想用datatable,改用objec[,]二维数据绑定后报错,请问DataSource只能用datatable绑定吗?

ArgumentException/r/n异常消息:数组不是一维数组。/r/n异常信息:   
  在 System.Array.GetValue(Int32 index)
   在 System.Array.System.Collections.IList.get_Item(Int32 index)
   在 FarPoint.Win.Spread.Model.DefaultSheetDataModel.a(Type A_0, Boolean A_1)
   在 FarPoint.Win.Spread.Model.DefaultSheetDataModel.b()
   在 FarPoint.Win.Spread.Model.DefaultSheetDataModel.set_DataSource(Object value)
   在 FarPoint.Win.Spread.SheetView.set_DataSource(Object value)
   在 FarPoint.Win.Spread.FpSpread.set_DataSource(Object value)

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-7-30 11:58:00
沙发
回复 1楼seaman的帖子

请使用以下代码测试泛型绑定:

  1.     public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }

  7.         private void Form1_Load(object sender, EventArgs e)
  8.         {
  9.             List<Car> cars = new List<Car>();
  10.             cars.Add(new Car("Ford", "Mustang", 1967));
  11.             cars.Add(new Car("Shelby AC", "Cobra", 1965));
  12.             cars.Add(new Car("Chevrolet", "Corvette Sting Ray", 1965));

  13.             fpSpread1.DataSource = cars;

  14.             fpSpread1.Sheets[0].Columns[0].DataField = "Year";

  15.             fpSpread1.Sheets[0].Columns[1].DataField = "Model";

  16.             fpSpread1.Sheets[0].Columns[2].DataField = "Make";
  17.         }
  18.     }

  19.     [Serializable]
  20.     public class Car
  21.     {
  22.         private string _make;
  23.         private string _model;
  24.         private int _year;

  25.         public Car(string make, string model, int year)
  26.         {
  27.             _make = make;
  28.             _model = model;
  29.             _year = year;
  30.         }

  31.         public string Make
  32.         {
  33.             get { return _make; }
  34.             set { _make = value; }
  35.         }

  36.         public string Model
  37.         {
  38.             get { return _model; }
  39.             set { _model = value; }
  40.         }

  41.         public int Year
  42.         {
  43.             get { return _year; }
  44.             set { _year = value; }
  45.         }
  46.     }
复制代码
回复 使用道具 举报
seaman
初级会员   /  发表于:2013-7-30 12:04:00
板凳
关键是我绑定的不是对象。。。而且列都不是固定的,不支持数组绑定,是吗?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-30 12:19:00
地板
回复 3楼seaman的帖子

两种方法可以绕过这个问题:
1.遍历数据的数据,逐一赋值给单元格。
2.转换数组为泛型对象,再绑定。例如,转换为 ArrayList。
回复 使用道具 举报
seaman
初级会员   /  发表于:2013-7-30 13:14:00
5#
我先试下第二种方法吧,最后考虑第一种方式,非常感谢。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-7-30 14:34:00
6#
回复 5楼seaman的帖子

客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部