找回密码
 立即注册

QQ登录

只需一步,快速开始

zongxudong
初级会员   /  发表于:2013-11-20 10:20  /   查看:5695  /  回复:5
我这边的具体需求是, 用户在我特点的单元格中输入数据的时候. 开始输入的时候就需要弹出一个辅助表格, 在输入的时候动态的过滤弹出表格数据. 然后选择一行后, 将选择的行填充到当前的录入行中.
类似WinForm 中的Popup 功能.
       我之前尝试过在Spread WPF 中填充一个自定义控件来实现.  感觉效果很不好. 主要是用户在录入的时候, 录入焦点还是在底层的单元格上. 感觉很麻烦

     请问你们是否有好的方式解决这样的需求.

5 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-11-20 12:28:00
沙发
回复 1楼zongxudong的帖子

zongxudong 你好,
附件是之前做的自定义编辑器的案例,请你参考看是否有帮助。

10857.zip (13.57 KB, 下载次数: 96)
回复 使用道具 举报
zongxudong
初级会员   /  发表于:2013-11-20 14:01:00
板凳
有没有办法得到录入单元的位置信息.  然后使用一个悬浮的窗口定位的单元格上.
不知道这个办法有没有可行性
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-20 15:46:00
地板
回复 3楼zongxudong的帖子

可以通过以下代码获取当前单元格相对于 表单左上角 的位置:

  1. void gcSpreadSheet1_CellClick(object sender, GrapeCity.Windows.SpreadSheet.UI.CellClickEventArgs e)
  2.         {
  3.             int rowCount = e.Row-1;
  4.             int colCount = e.Column-1;
  5.             double cellleft=this.gcSpreadSheet1.Sheets[0].GetActualColumnWidth(0, colCount, GrapeCity.Windows.SpreadSheet.Data.SheetArea.Cells);
  6.             double celltop = this.gcSpreadSheet1.Sheets[0].GetActualRowHeight(0, rowCount, GrapeCity.Windows.SpreadSheet.Data.SheetArea.Cells);

  7.             double rowheaderleft=this.gcSpreadSheet1.Sheets[0].GetActualColumnWidth(0, this.gcSpreadSheet1.Sheets[0].RowHeader.ColumnCount, GrapeCity.Windows.SpreadSheet.Data.SheetArea.RowHeader);
  8.             double colheadertop=this.gcSpreadSheet1.Sheets[0].GetActualColumnWidth(0, this.gcSpreadSheet1.Sheets[0].ColumnHeader.RowCount, GrapeCity.Windows.SpreadSheet.Data.SheetArea.ColumnHeader);
  9.         }
复制代码
回复 使用道具 举报
zongxudong
初级会员   /  发表于:2013-11-22 11:56:00
5#
好的, 谢谢. 我试试看弄个Popup 窗口定位在那边
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-22 12:10:00
6#
回复 5楼zongxudong的帖子

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