找回密码
 立即注册

QQ登录

只需一步,快速开始

yanwenlue

论坛元老

4

主题

15

帖子

4650

积分

论坛元老

积分
4650
最新发帖
yanwenlue
论坛元老   /  发表于:2016-1-11 15:03  /   查看:8510  /  回复:13
如何知道Spread控件中数据的哪些行有更改过(存在多行修改),在修改按钮中就只执行保存此些数据(一次过执行所有修改过的行记录到数据库中).
请帮忙解决此问题,非常感谢!

13 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2016-1-11 17:12:00
沙发
您好,

Spread会自动将所有修改的数据保存到后台。您现在保存失败了吗?
回复 使用道具 举报
yanwenlue
论坛元老   /  发表于:2016-1-11 17:19:00
板凳
我用下面方面更新后台数据,但我修改多行时,它也只检测到最开始条修改数据。
protected void FpSpread1_UpdateCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
    {
        System.Collections.ArrayList a = e.EditValues;
//SQL update 语句
    }

所以我想就是,总共有10条数据,当我更新了5条,我就将这5条数据更新到数据库里。

你的指的“Spread会自动将所有修改的数据保存到后台”?它是自动保存还是要写代码?请问有没有这样的例子,谢谢!
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-12 11:19:00
地板
如果是在前台修改数据,可以直接点击默认自带的提交按钮(左下角那个绿色对勾按钮),他就更新数据库了。当然前台调用UpdateCommand也是一样的效果。

你这句代码的问题在于,ArrayList 就是个一维数组,只能存一条数据,所以实际上你只获得了第一行数据,因此更新sql也就是第一行变化了。
回复 使用道具 举报
yanwenlue
论坛元老   /  发表于:2016-1-12 11:42:00
5#
回复 4楼gw0506的帖子

你指的是用自带那个绿色勾就能将修改的内容更新到数据库?
我试了不行的,我测试是用绑定数据库形式的。

那如果我要同时更新多条修改的记录,应该如何操作?谢谢
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-12 12:31:00
6#
一样的,你绑定好之后,不管修改了什么记录,提交之后,都会更新回去。
回复 使用道具 举报
yanwenlue
论坛元老   /  发表于:2016-1-12 14:13:00
7#
回复 6楼gw0506的帖子

//读取数据库数据,成功
protected void Button1_Click(object sender, EventArgs e)
    {
        FarPoint.Web.Spread.Model.DefaultSheetDataModel model = new FarPoint.Web.Spread.Model.DefaultSheetDataModel(DAL.QCOrderCheck_DAL.GetQCOrderCheck());
        FpSpread1.Sheets[0].DataModel = model;
    }

修改某一格数据后点勾更新,失败,
请问是不是要设置什么?有没有例子
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-12 16:05:00
8#
这个代码是创建了一个新的model,那么提交之后只能更新这个新创建的model对象,这个是更新了。根据你的代码,可能你最终的GetQCOrderCheck()方法会从数据库去数据。但是这里已经打断了数据库和Spread的关系,所以你要再将Model同步到数据源才行。

如果要直接绑定数据源,不用走DataModel,用DataSource。参考下面代码
  1. string conStr  = "Provider=Microsoft.JET.OLEDB.4.0;data source=d:\\nwind.mdb";
  2. string sqlStr = "SELECT * FROM Employees";
  3. System.Data.OleDb.OleDbConnection conn = New System.Data.OleDb.OleDbConnection(conStr);
  4. DataSet ds = New DataSet();
  5. System.Data.OleDb.OleDbDataAdapter da = New System.Data.OleDb.OleDbDataAdapter(sqlStr, conn);
  6. da.Fill(ds, "Employees");
  7. FpSpread1.DataSource = ds;
  8. FpSpread1.DataBind();
  9. conn.Close();
复制代码
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-12 16:07:00
9#
另外,

这里有一个视频教程,如何绑定数据库并与数据库交互的。
http://www.gcpowertools.com.cn/p ... ign=webform#lesson4

帮助文档中有一个章节,专门是一步步教用户怎么绑定数据库的。应该对你有用。
Tutorial: Binding to a Corporate Database

spreadaspbindingtodatabase.png
回复 使用道具 举报
yanwenlue
论坛元老   /  发表于:2016-1-12 16:15:00
10#
回复 7楼yanwenlue的帖子

//改成这样也不行
protected void Button1_Click(object sender, EventArgs e)
    {
        //FarPoint.Web.Spread.Model.DefaultSheetDataModel model = new FarPoint.Web.Spread.Model.DefaultSheetDataModel(DAL.QCOrderCheck_DAL.GetQCOrderCheck());
        //FpSpread1.Sheets[0].DataModel = model;
        FpSpread1.DataSource = DAL.QCOrderCheck_DAL.GetQCOrderCheck();
        FpSpread1.DataBind();
    }
版主,你给个完整的例子吧,真心不会用。谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部