找回密码
 立即注册

QQ登录

只需一步,快速开始

qd98zhq

论坛元老

12

主题

61

帖子

1万

积分

论坛元老

积分
15632

活字格认证

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

12 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-12-26 15:17:00
沙发
回复 1楼qd98zhq的帖子

qd98zhq 你好,

Spread 本身没有提供快速查找增删改查数据操作的接口,新增和删除都应该是通过代码控制的,所以我们可以拿到新增或删除行的信息。

修改状态是指的更改 Cell 文本吗?可以通过 EditChange  事件来获取。

谢谢
回复 使用道具 举报
qd98zhq
论坛元老   /  发表于:2014-12-27 10:24:00
板凳
1.在spread控件列表中的回车键默认动作是跳转到向下一行的单元格,能否可以根据我需要控制跳转呢,比如我回车后跳转在同一行的下一个单元格(如:从A1到B1),并非为下一行的单元格。
2.spread wpf 控件数据绑定的方法有哪几种呢,请详细说明有哪几种,用法是怎么样的。
不胜感谢。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-12-29 12:26:00
地板
回复 3楼qd98zhq的帖子

问题一,可以通过更改KeyMap行为实现:

  1. gcSpreadSheet1.View.KeyMap.Remove(new KeyStroke(Key.Enter, ModifierKeys.None));
  2. gcSpreadSheet1.View.KeyMap.Add(new KeyStroke(Key.Enter, ModifierKeys.None), SpreadActions.NavigationRight );
复制代码
回复 使用道具 举报
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.   }
复制代码


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

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

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

谢谢
回复 使用道具 举报
qd98zhq
论坛元老   /  发表于:2015-1-22 17:53:00
10#
现在有一个问题,绑定方式为:gcSpreadSheet1.Sheets[0].DataSource = dt;
1.绑定后显示出来后,我在spreadsheet1 中修改某个单元格的值,为什么修改的值没有立刻更新到dt中的呢,代码写或如何操作。谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部