C1FlexGrid 中如何根据其中元素找到当前行?
C1DataGrid 中有 GetCellFromFrameworkElement 方法获取到元素所在单元格, 可以根据单元格获取到当前行.C1FlexGrid 中有没有对应的办法呢?
本帖最后由 Alice 于 2017-2-8 10:31 编辑
谢谢您的反馈。
不知道您获取是有什么需求。
如果是想设置样式的话,可以通过CellFactory, 重写ApplyCellStyles方法就可以设置样式。
另外有个HitTest方法,可以根据鼠标位置获取到单元格的信息。
我是在flexgrid的列中使用了模版, 模版中有一个按钮.按钮有点击事件, 在事件中要获取当前按钮所在行的数据.
使用HitTest, 用button的 RoutedEventArgs 作为参数 获取到的行是 row:-1 column:-1 zxc9089 发表于 2017-2-8 11:49
我是在flexgrid的列中使用了模版, 模版中有一个按钮.按钮有点击事件, 在事件中要获取当前按钮所在行的数 ...
HitTest是根据鼠标位置转换为c1flexgrid位置信息,所以应该在鼠标相关事件里去获取。
所以要看是不是你传入的鼠标有问题,没有转换。
随机安装示例有个HitTest的使用示例,你可以参考下,路径如下:
\Documents\ComponentOne Samples\WPF\C1.WPF.FlexGrid\CS\HitTestTemplate\HitTestTemplate
Alice 发表于 2017-2-8 15:30
HitTest是根据鼠标位置转换为c1flexgrid位置信息,所以应该在鼠标相关事件里去获取。
所以要看是不是你 ...
下面是我的设置方式 应该没错呀
zxc9089 发表于 2017-2-16 15:32
下面是我的设置方式 应该没错呀
你做个简单的Demo发过来,我帮你看看。 Alice 发表于 2017-2-16 17:45
你做个简单的Demo发过来,我帮你看看。
这是demo
其实主要想实现的功能是点击按钮, 根据业务逻辑填充当前行数据.当行状态为非编辑状态时点击按钮自动就选中了按钮所在行. 所以可以用selectitem来实现.
然而在数据处于编辑状态下,点另一行数据的按钮, 行选中状态没有发生改变.
我使用hittest 来获取按钮所在行, 得到的结果都是0行0列. 如下图
zxc9089 发表于 2017-2-17 14:28
这是demo
其实主要想实现的功能是点击按钮, 根据业务逻辑填充当前行数据.当行状态为非编辑状 ...
谢谢您提供的Demo.
在flexgrid的相关鼠标事件里,直接使用grid.HitTest(e)就能正确得到点击的位置。
如果是使用ButtonClick或是其他的事件,里面的坐标是需要转换的。
请参考:
private void Button_Click(object sender, RoutedEventArgs e)
{
var test = grid.HitTest(Mouse.GetPosition(this));
MessageBox.Show(string.Format("row:{0} column:{1}", test.Row, test.Column));
} 问题解决了 谢谢:loveliness: 本帖关闭。
页:
[1]