3

我正在使用 Infragistics 2013 版本。我有一个要求,我必须在 winforms ultragrid 的列中添加一个按钮和一个文本。该按钮将打开一个弹出屏幕,允许用户选择一个值,该值将在网格列中显示为文本。

谢谢你。

4

4 回答 4

6

将列的样式设置为ColumnStyle .EditButton。例如:

UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton 

然后,您可以处理 UltraGrids CellButtonClicked事件以了解单击按钮的时间,其中 e.Cell 将让您知道单击了哪个单元格:

Private Sub UltraGrid1_ClickCellButton(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinGrid.CellEventArgs) Handles ultraGrid1.ClickCellButton
   Debug.WriteLine("Button in " & e.Cell.Value.ToString() & " cell was clicked.")
End Sub
于 2014-01-13T19:58:26.417 回答
2

只是稍微扩展答案:如果您希望按钮始终可见(而不是仅在单击包含按钮的单元格时),您可能还需要设置 ButtonDisplayStyle:

UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").ButtonDisplayStyle = UltraWinGrid.ButtonDisplayStyle.Always

此外,如果您想更好地控制按钮的外观或位置,那么来自 Infragistics 的 Mike Saltzman 的以下信息可能会很有用:

如果您想要左对齐的按钮、同一单元格中的多个按钮,或者不填充整个单元格但包含文本和/或图像的按钮,您可以使用编辑器。基本方法是这样的:

1) 在表单中添加一个编辑器控件(例如 UltraTextEditor)。

2) 使用 ButtonsLeft 和/或 ButtonsRight 集合添加您想要的按钮。您可以设置每个按钮的文本和外观。

3)在代码中,将Column(或Cell)的EditorControl设置为编辑器控件。这本质上类似于设置样式,但以更健壮的方式。

4) 要处理按钮的单击事件,您需要处理编辑器上的事件——而不是网格。例如,如果它只是一个普通按钮,您将使用 EditorButtonClick。事件 args 将传递给您一个 Context ,它将返回单击按钮的网格单元格。

于 2014-02-15T16:42:35.553 回答
1

好的得到了答案。

必须将列样式设置为 EditButton。

UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton
于 2014-01-16T05:06:31.463 回答
0

这很简单。

 private void ultraGrid1_InitializeRow(object sender, InitializeRowEventArgs e)
        {
            // We only need to do this the first time the row is initialized.
            if (e.ReInitialize == false)
            {
                e.Row.Cells["Button"].Value = "Click Here";
            }
        }
        }
于 2020-05-08T23:57:27.860 回答