问题标签 [datagridcell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
230 浏览

c# - 有没有办法直接访问和操作指定 DataGrid 中的 DataGridCell?C# Visual Studio 2015 社区

有没有办法直接访问和操作指定 DataGrid 中的 DataGridCell?C# Visual Studio 2015 社区

我想访问特定的 DataGridCells,最好使用行和列,验证内容并更改一些属性。一旦我可以到达牢房,我就可以完成所有的工作。我一直在使用 VisualTreeHelper,几乎可以到达那里。我写“几乎”是因为由于某种原因,如果我在两个步骤之间插入 MessageBox.Show() 一切正常,除了我有一个我不想要的消息框。具体来说,我正在用一组数据填充数据网格,并希望更改每个单元格的背景和前景,这些单元格的数据与另一组匹配。

我在使用消息框、控制台写入以及本地和监视变量之间进行调试。我发现没有消息框,我的 DataGridRowPresenter 显示 0 个孩子并且我的条件失败。如果我删除条件,它会抛出一个索引越界异常。如果我有消息框,它会在消息框之前显示 0 个子节点,在消息框之后显示 2 个子节点(这对我的测试数据来说是正确的),并且该方法的其余部分继续执行并完全按照我的意愿执行。

我可以做些什么(除了消息框)来允许正确遍历树吗?或者,最好有一种更简单的方法可以直接进入我想要操作的单元格?如果我可以选择 DataGridViewer 而不是 DataGrid,这似乎很简单。

谢谢你,埃里克

PS 在 StackOverflow 上回答了几个非常相似的问题,但每个问题似乎都在解决不同 的问题如何在代码中访问 DataGridCell 的数据对象?- 正在寻找删除后的信息,我正在寻找基于行和列的单元格,而不是任何类型的事件 访问 WPF 中 DataGrid 的单元格值?- 是单元格值的一个很好的循环,但我似乎没有看到如何使用该过程来更改单元格属性(例如,如果单元格内容是“史密斯”,则将字体更改为粗体)

这就是我所做的...

我也试过这个来获取行,但我得到了一个空结果

0 投票
2 回答
868 浏览

c# - DataGridCell 向下时为 TextBlock,向上时为 TextBox

所以,我有一个 DataGrid,其中包含如下所示的元素:

PreviewKeyDown 工作得很好,当我上去时,我可以毫无问题地回到单元格。我看到它的方式,出于所有意图和目的,我在那里有一个 TextBox。

现在,当我尝试在某个事件中从单元格中下来时:

(注意:我手动放置了两次 VisualTreeHelper 方法,我确实有 FindVisualChildren 方法,但我手动浏览了树,并且为了加快速度,我手动放置了它)

如果我尝试将 tb 声明为 cp.Content 作为 TextBox,我会得到一个空值。出于某种原因,ContentPresenter 位于 TextBlock 内部,而不是 TextBox。FindVisualChildren(cell) 返回一个空的 IEnumerable。

为什么这是个问题?因为我需要能够在文本上调用 SelectAll(),而 textBlock 不提供该选项。任何帮助是极大的赞赏。提前致谢!

稍后编辑:显然,当不处于编辑模式时,数据网格包含一个文本块。在编辑模式下,一个文本框。现在,datagrid.BeginEdit() 似乎不起作用,因为它没有初始化 TextBox,也没有触发 PrepareCellForEditing 事件。

0 投票
0 回答
353 浏览

c# - 使用 OnCellPainting e.PaintBackground 绘制 DataGridViewCells 背景的一部分

我正在重写 OnCellPainting 方法,因此我可以为 DataGridView 中的某些 DataGridViewCells 绘制自定义边框

最初我的边框被绘制,然后在调用该方法时被绘制e.PaintBackground(e.ClipBounds, true)

我已经更新了我的代码,以便它首先绘制背景,然后在顶部绘制我的寄宿生。这种方法效果很好,但理想情况下我希望能够在我绘制的边界内绘制背景颜色(使用e.Graphics.DrawLines(....)

为了测试这个概念,我尝试了以下方法:

然而,在我的方法结束时,它不仅绘制了我的矩形指定的部分,还绘制了整个单元格,我是否从根本上遗漏了什么?

0 投票
1 回答
1997 浏览

vb.net - DataGridView,将类型化列的单元格更改为另一种类型

我正在尝试将 datagridview 上的列与 2 种控件类型(复选框和文本框)混合,数据来自我也在编写的存储过程,因此我有一点灵活性。

在存储过程中,我返回一个空白列作为SelectionGridView 中的列,但是在尝试根据条件将单元格转换为其他类型时遇到问题......

我一直认为问题是在控件类型之间进行转换时的数据类型,我尝试了各种不同的方法来先转换值,先转换控件等,但没有任何方法可以 100% 工作.....

目前,我让 SPFalse在列中返回字符串,然后将其与标准一起使用来创建复选框.....它工作正常,但即使将值转换为 a 后,值仍然是字符串Boolean,数据类型也是Booleanon复选框,但值是String.....这已经超出了我的想象,我不知所措......

这是将文本框列单元格转换为复选框单元格的代码

任何想法为什么复选框的值仍然是一个字符串('False')......

它现在正在做的问题是当我处理单元格单击事件时,我无法使用该Not Value技术选中或取消选中该框

- - 编辑 - -

这是我正在使用的子程序,它创建了几种不同类型的控件。

这将创建我想要的复选框,但值仍然作为导致单元格的字符串。单击事件失败,因为我试图将复选框值设置为 true 并且该.value = not .value部分失败,因为由于某种原因该值仍然是字符串,但复选框值类型实际上是布尔值.....

0 投票
1 回答
301 浏览

c# - 空值的datagridcell自定义模板?

我正在尝试填充数据网格,并且希望空单元格具有特定的模板。

在搜索中,我遇到了一些不同的类似示例,例如Cellvalue 的 Color DataGridCell。此示例使用转换器为单元格设置背景颜色,但从我所阅读的内容来看,我不相信转换器可以用于设置模板。

关于我如何正确地这样做的任何建议?具体来说,我希望在单元格内容为空时显示文本 NULL(但不是空字符串)。据我所知,模板将是这样做的正确方法。

0 投票
2 回答
1092 浏览

c# - WPF DataGrid 禁用单元格正在接收文本输入

考虑以下具有三列的 DataGrid:

在此处输入图像描述

当年龄为 -1 时,相应的单元格将被禁用。

理想情况下,用户不能更改禁用的单元格值。但是考虑到用户在第 1 行,键盘焦点在 Age 列的相应单元格中,然后按 Enter,现在用户键入任意数字,禁用的单元格获取该值!这是理想的行为吗?我怎样才能避免这种行为?

在此处输入图像描述

要复制问题:

  1. 选择 Age 列第 1 行中的单元格
  2. 按回车
  3. 输入一个数字

可重现的代码:

XAML:

对应的cs:

0 投票
1 回答
7111 浏览

c# - 如何在 DataGridView 单元格中制作格式掩码?

我需要在一个单元格中创建一个格式/掩码,以防止用户输入不相关的数据。

列单元格包含日期值,例如"MM/YYYY"没有日期值。

我尝试了以下方法来做出这个定义,但没有成功:

另外,我尝试从那里转到属性DataGridView并进行定义Format

0 投票
1 回答
1611 浏览

c# - 将 datagrid 列中的多个单元格值绑定到单个文本框

在我的 wpf 项目中,我有一个由数据集填充的数据网格,其中包含一些列和许多行。我想遍历 Column[1] Rows[i] (例如,获取 datagrid 中所有行的 column[1] 单元格内的值)。我的问题是如何将这些单元格值绑定到单个文本框?我知道使用多重绑定将是实现解决方案的方法之一,但我没有找到任何关于通过数据网格多重绑定文本框的帮助。例如,我已阅读以下问题:

如何将多个值绑定到单个 WPF TextBlock?

如何在 DataGridTextColumn 上使用 MultiBinding?

此外,绑定单个值是可以实现的,我已经做到了。我将不胜感激任何帮助。提前致谢 !!

我的 XAML:

0 投票
2 回答
348 浏览

c# - 从 DataGrid 的已编辑单元格返回 null

我在 WPF 中创建了一个带有可编辑单元格的简单 DataGrid。但我从编辑的单元格中获取空数据。我是WPF的新手。问题是什么?

当我尝试更改文件夹单元格时,它已更改,如图 所示

这就是结果

守则,

0 投票
2 回答
100 浏览

wpf - 如何将宽度图像与 datagridcell 宽度相匹配

这是我的问题:选择行的唯一方法是单击图像(绿色圆圈)。

我想做的事情:当我单击时DataGridCell,不仅选择了图像,还选择了整行。

我必须DataGridTemplateColumnDataGrid.

我设置SelectionMode="Single" SelectionUnit="FullRow"为 DataGrid 属性。

但是,如果我没有在图像上完全单击,则不会选择该行。


截图

我做了一些截图来更清楚地解释它:

图片尺寸: 图片尺寸

DataGridCell 的大小 行大小


所以,在我看来,问题可能来自两件事:

  • 尺寸图像不适合整个图像cell,所以这就是为什么,但我怎样才能适应它?
  • 选择Cell被禁用,我可以启用它

谢谢你的时间 !


编辑 1