找回密码
 立即注册

QQ登录

只需一步,快速开始

zxc9089
中级会员   /  发表于:2017-2-7 18:38  /   查看:6204  /  回复:9
C1DataGrid 中有 GetCellFromFrameworkElement 方法获取到元素所在单元格, 可以根据单元格获取到当前行.

C1FlexGrid 中有没有对应的办法呢?

9 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2017-2-8 10:30:29
沙发
本帖最后由 Alice 于 2017-2-8 10:31 编辑

谢谢您的反馈。
不知道您获取是有什么需求。
如果是想设置样式的话,可以通过CellFactory, 重写ApplyCellStyles方法就可以设置样式。

另外有个HitTest方法,可以根据鼠标位置获取到单元格的信息。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2017-2-8 11:49:24
板凳
我是在flexgrid的列中使用了模版, 模版中有一个按钮.  按钮有点击事件, 在事件中要获取当前按钮所在行的数据.  

使用HitTest, 用button的 RoutedEventArgs 作为参数 获取到的行是 row:-1 column:-1
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-2-8 15:30:45
地板
zxc9089 发表于 2017-2-8 11:49
我是在flexgrid的列中使用了模版, 模版中有一个按钮.  按钮有点击事件, 在事件中要获取当前按钮所在行的数 ...

HitTest是根据鼠标位置转换为c1flexgrid位置信息,所以应该在鼠标相关事件里去获取。
所以要看是不是你传入的鼠标有问题,没有转换。
随机安装示例有个HitTest的使用示例,你可以参考下,路径如下:
\Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\HitTestTemplate\HitTestTemplate
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2017-2-16 15:32:19
5#
Alice 发表于 2017-2-8 15:30
HitTest是根据鼠标位置转换为c1flexgrid位置信息,所以应该在鼠标相关事件里去获取。
所以要看是不是你 ...

下面是我的设置方式 应该没错呀




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-2-16 17:45:48
6#
zxc9089 发表于 2017-2-16 15:32
下面是我的设置方式 应该没错呀

你做个简单的Demo发过来,我帮你看看。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2017-2-17 14:28:53
7#
Alice 发表于 2017-2-16 17:45
你做个简单的Demo发过来,我帮你看看。




这是demo

其实主要想实现的功能是点击按钮, 根据业务逻辑填充当前行数据.  当行状态为非编辑状态时点击按钮自动就选中了按钮所在行. 所以可以用selectitem来实现.

然而在数据处于编辑状态下,点另一行数据的按钮, 行选中状态没有发生改变.  

我使用hittest 来获取按钮所在行, 得到的结果都是0行0列. 如下图


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2017-2-17 17:06:37
8#
zxc9089 发表于 2017-2-17 14:28
这是demo

其实主要想实现的功能是点击按钮, 根据业务逻辑填充当前行数据.  当行状态为非编辑状 ...

谢谢您提供的Demo.
在flexgrid的相关鼠标事件里,直接使用grid.HitTest(e)就能正确得到点击的位置。
如果是使用ButtonClick或是其他的事件,里面的坐标是需要转换的。
请参考:
  1.   private void Button_Click(object sender, RoutedEventArgs e)
  2.         {            
  3.             var test = grid.HitTest(Mouse.GetPosition(this));
  4.             MessageBox.Show(string.Format("row:{0}   column:{1}", test.Row, test.Column));
  5.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
zxc9089
中级会员   /  发表于:2017-2-17 20:28:09
9#
问题解决了 谢谢
回复 使用道具 举报
gw0506
超级版主   /  发表于:2017-2-20 19:27:56
10#
本帖关闭。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部