我使用的是Infragistics 2013版。 我有一个要求,我必须在winforms ultragrid的列中添加一个按钮和一个文本。 该按钮将打开一个弹出屏幕,允许用户选择将在网格列中显示为文本的值。
谢谢。
答案 0 :(得分:6)
将列的Style设置为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
答案 1 :(得分:1)
好的,得到了答案。
必须将列样式设置为EditButton。
UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").Style = Infragistics.Win.UltraWinGrid.ColumnStyle.EditButton
答案 2 :(得分:1)
只是稍微扩展答案:如果您希望按钮始终可见(而不是仅当您单击包含按钮的单元格时),您可能还需要设置ButtonDisplayStyle:
UltraGrid1.DisplayLayout.Bands(0).Columns("ColName").ButtonDisplayStyle = UltraWinGrid.ButtonDisplayStyle.Always
此外,如果您想要更多地控制按钮的外观或位置,那么来自Infragistics的Mike Saltzman的这些信息可能会有用:
如果您想要左对齐的按钮,则需要多个按钮 相同的单元格,或不填充整个单元格但包含文本的按钮 和/或图像,您可以使用编辑器。基本方法是一些东西 像这样:
1)在表单中添加一个编辑器控件(如UltraTextEditor,for 例子)。
2)使用ButtonsLeft和/或ButtonsRight集合添加 你想要的按钮。您可以设置每个按钮的文本和外观。
3)在代码中,将Column(或Cell)的EditorControl设置为 编辑控制。这基本上就像设置样式但在一个 更健壮的方式。
4)要处理按钮的点击事件,您需要处理事件 在编辑器上 - 而不是网格。例如,如果它只是正常的 按钮,你会使用EditorButtonClick。事件args将通过你 一个Context,它将返回按钮所在的网格单元格 点击。
答案 3 :(得分: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";
}
}
}