找回密码
 立即注册

QQ登录

只需一步,快速开始

qd98zhq

论坛元老

12

主题

61

帖子

1万

积分

论坛元老

积分
15632

活字格认证

qd98zhq
论坛元老   /  发表于:2014-12-26 13:42  /   查看:12167  /  回复:12
现在我有一个问题,比如Spread控件中有几千条记录,有什么方法能快速得到Spread表格控件新增状态、修改状态或删除状态的数据呢?谢谢,麻烦了。

12 个回复

正序浏览
iceman
社区贡献组   /  发表于:2015-1-23 11:47:00
13#
回复 12楼qd98zhq的帖子

同样需要手动同步,代码如下:

  1.         public MainWindow()
  2.         {
  3.             InitializeComponent();

  4.             System.Data.DataRow dr = default(System.Data.DataRow);
  5.             dt.Columns.Add("Series0");
  6.             dt.Columns.Add("Series1");
  7.             dr = dt.NewRow();
  8.             dr[0] = 2;
  9.             dr[1] = 1;
  10.             dt.Rows.Add(dr);
  11.             dr = dt.NewRow();
  12.             dr[0] = 4;
  13.             dr[1] = 2;
  14.             dt.Rows.Add(dr);
  15.             dr = dt.NewRow();
  16.             dr[0] = 3;
  17.             dr[1] = 4;
  18.             gcSpreadSheet1.Sheets[0].AutoGenerateColumns = true;
  19.             gcSpreadSheet1.Sheets[0].DataSource = dt;
  20.             gcSpreadSheet1.Invalidate();

  21.             gcSpreadSheet1.Sheets[0].CellChanged += MainWindow_CellChanged;

  22.         }

  23.         void MainWindow_CellChanged(object sender, GrapeCity.Windows.SpreadSheet.Data.CellChangedEventArgs e)
  24.         {
  25.             string text = this.gcSpreadSheet1.Sheets[0].Cells[e.Row, e.Column].Text;
  26.             dt.Rows[e.Row][e.Column] = text;
  27.         }

  28.         private void Button_Click(object sender, RoutedEventArgs e)
  29.         {
  30.             gcSpreadSheet1.Sheets[0].ReloadBindingData();
  31.             gcSpreadSheet1.Invalidate();
  32.         }
复制代码
回复 使用道具 举报
qd98zhq
论坛元老   /  发表于:2015-1-23 11:14:00
12#
其实我想说的不是自动同步到数据库表,只是同步到绑定dt的内存表中而以。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-22 18:10:00
11#
回复 10楼qd98zhq的帖子

目前 Spread 不具备自动同步更改到数据库的功能,需要手动写 SQL 修改数据库。单元格修改信息可以通过 SheetView 下的 ValueChanged 事件来获取。
回复 使用道具 举报
qd98zhq
论坛元老   /  发表于:2015-1-22 17:53:00
10#
现在有一个问题,绑定方式为:gcSpreadSheet1.Sheets[0].DataSource = dt;
1.绑定后显示出来后,我在spreadsheet1 中修改某个单元格的值,为什么修改的值没有立刻更新到dt中的呢,代码写或如何操作。谢谢
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-12 17:43:00
9#
回复 8楼qd98zhq的帖子

我理解这个需求就是希望获取当前活跃行的特定 Cell 文本,并且设值给 TextBox。可以通过 SelectionChanged 事件来获取当前行,进而取得对应值即可。

如果我理解的有误,还请进一步指出来。

谢谢
回复 使用道具 举报
qd98zhq
论坛元老   /  发表于:2015-1-12 14:43:00
8#
问题2 并非是希望设置 Spread 某一列的单元格编辑器为 TextBox ,而是我在界面另外独立显示Textbox控件,我只是想让这个独立显示textbox控件与Spread 某一列同步显示:比如:第一行的Series1 列内容为 “服务1”,textbox的内容也是"服务1";第二行的Series1 列内容为 “服务XX”,textbox的内容也是"服务XX"。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-12 14:29:00
7#
回复 6楼qd98zhq的帖子

问题1、测试代码如下:

  1.             DataTable dt = new DataTable("Test");
  2.             System.Data.DataRow dr = default(System.Data.DataRow);
  3.             dt.Columns.Add("Series0");
  4.             dt.Columns.Add("Series1");
  5.             dr = dt.NewRow();
  6.             dr[0] = 2;
  7.             dr[1] = 1;
  8.             dt.Rows.Add(dr);

  9.             gcSpreadSheet1.Sheets[0].DataSource = dt;
  10.             gcSpreadSheet1.Sheets[0].AutoGenerateColumns = false;
  11.             gcSpreadSheet1.Sheets[0].Columns[0].DataField = "Series1";
  12.             gcSpreadSheet1.Sheets[0].Columns[1].DataField = "";
  13.             gcSpreadSheet1.Invalidate();
复制代码


问题2,请问是希望设置 Spread 某一列的单元格编辑器为 TextBox 吗?
回复 使用道具 举报
qd98zhq
论坛元老   /  发表于:2015-1-10 08:05:00
6#
谢谢以上的解答,如果是以gcSpreadSheet1.Sheets[0].DataSource = dt; 这种方式绑定,我又有两个问题:
1.我如何在spread控件中绑定的显示指定列(比如,DataTable中有30列,我只要绑定显示其中的10列显示出来,其余的不显示,前端的代码该如何实现呢),能否提供一个DEMO,现在我又研究到这里停止了,谢谢帮忙解答。
2.用这种方式的同时,我想另外用TextBox控件绑定spread控件列表显示的某一列,又该如何实现。实现效果图如下:
spread列表与textbox绑定同步.png

请帮忙看一下,困扰我很久这两个问题,不胜感谢。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-1-7 10:03:00
5#
回复 3楼qd98zhq的帖子

问题二,请问您具体想实现哪些功能?Spread目前只有一种数据绑定方式:

  1. gcSpreadSheet1.Sheets[0].DataSource = dt;
复制代码


如果是希望实现数据的同步,可以通过2#方法实现。
重现加载及刷新数据方法如下:

  1. private void button1_Click(object sender, RoutedEventArgs e)
  2.   {
  3.         gcSpreadSheet1.Sheets[0].ReloadBindingData();
  4.         gcSpreadSheet1.Invalidate();
  5.   }
复制代码


谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部