【问题标题】:Ultragrid entire column selection when header is clicked单击标题时选择Ultragrid整个列
【发布时间】:2014-05-28 22:57:59
【问题描述】:
这似乎是一个非常简单的问题,但我被困住了,找不到解决办法。我在我的表单中使用了带有几列的超网格。我的问题是,当我尝试单击列标题时,我希望我的整个列都被选中,但它没有。我假设 SelectTypeCol 是我的列选择的属性,但它也不起作用。我还尝试将每一列添加到 Selected.Columns 集合中,例如 UltraGrid1.DisplayLayout.Bands(0).Columns(i).Header.Selected = True 但它对我也不起作用。我相信 Selected 仅在运行时可用,但在设计模式下不可用。
因此,如果有更简单的方法来完成这项工作,请告诉我。
谢谢
【问题讨论】:
标签:
infragistics
ultrawingrid
【解决方案1】:
您正在寻找房产HeaderClickAction
grid.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Select
当您单击标题时,这将自动将整个列的选择状态翻转为已选择(或已选择)。当然这也意味着你失去了对所有列自动排序的能力
您可以使用这样的代码 (C#) 以编程方式设置列的选择状态
grid.DisplayLayout.Bands[0].Columns["youColumnKey"].Header.Selected = true;
这将允许将HeaderClickAction 属性留给SortSingle 或SortMulti,但您必须使用代码和适当的事件来处理这种情况
【解决方案2】:
您需要在网格上有一个 InitializeLayout 事件。在这种情况下,您需要将 chekboxsynchronization 设置为默认值,它应该在这里工作是示例代码
private void ultraGrid1_InitializeLayout(object sender,
Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
{
e.Layout.Bands[0].Columns.Add("CheckBox");
e.Layout.Bands[0].Columns["CheckBox"].Style = ColumnStyle.CheckBox;
e.Layout.Bands[0].Columns["CheckBox"].Header.CheckBoxVisibility = HeaderCheckBoxVisibility.WhenUsingCheckEditor;
e.Layout.Bands[0].Columns["CheckBox"].Header.CheckBoxSynchronization = HeaderCheckBoxSynchronization.Default; <-- make sure it is set to default here
}