无法 select 带有复选框列的 infragistics ultrawingrid 上的多行

Unable to select multiple rows on infragistics ultrawingrid with a check box column

我有下面的代码,它成功地将一个复选框列添加到 ultrawingrid,我的问题是,当我通过选中 Select 列上的复选框进行选择时,ultrawingrid 的选定行数没有更新,它仍然显示计数为零,而且我想知道如何启用多复选框选择,即选择多行...

下面是代码...

private void grdPayVis_InitializeLayout(object sender,InitializeLayoutEventArgs e) 
 var gridBand = grdPayVis.DisplayLayout.Bands[0]; 
    if(!gridBand.Columns.Exists("Select"))
    gridBand.Columns.Add("Select", "Select");
gridBand.Columns["Select"].Header.VisiblePosition = 0; 
gridBand.Columns["Select"].Hidden = false; 
gridBand.Columns["Select"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox; 
gridBand.Columns["Select"].AutoSizeMode = ColumnAutoSizeMode.AllRowsInBand; 
gridBand.Columns["Select"].CellClickAction = CellClickAction.Edit; 

}

您可以在从数据库中读取数据后向数据中添加一个新列table

ds = new DataSet("PayCharge"); 
ds= obj.GetData(); 
DataColumn dc = new DataColumn("Select", typeof(boolean));
dc.DefaultValue = false;
ds.Tables[0].Columns.Add(dc);
grdVisPay.SetDataBinding(ds, "PayCharge");  
.....

现在,您数据集中的第一个 table 有一个名为 Select 的未绑定列,当您将其设置为数据源时,您将能够像您已经完成的那样进行操作。但这次只要您触摸复选框,值 True/False 就会在基础数据 table 中设置。当您需要发现哪些是选中的行时,您使用的是数据源,而不是网格。例如

void buttonSave_Click(object sender, EventArgs e)
{
     DataSet ds = grdVisPay.DataSource as DataSet;
     DataRows[] selectedRows = ds.Tables[0].Select("Select = True");
     foreach(DataRow row in selectedRows)
     {
         ... do whatever you need with the selected row...

     }
}

我不确定你到底想达到什么目的。当您将 Select 列中的 CellClickAction 设置为 Edit,然后单击任何此列中的单元格将 select 单元格而不是行。 Grid 具有 Selected 属性,它公开了三个集合 - 行、列和单元格。在您的情况下,您正在更改 selected 单元格而不更改 selected 行集合。如果您需要 select 行,您需要将 Select 列中的 CellClickAction 设置为 Row Select。如果您需要同时更改 Select 列的复选框状态,您可以处理 A​​fterSelectChange像这样的网格事件:

private void grdPayVis_AfterSelectChange(object sender, AfterSelectChangeEventArgs e)
{
    if (e.Type == typeof(UltraGridRow))
    {
        foreach (UltraGridRow row in this.grdPayVis.Selected.Rows)
        {
            row.Cells["Select"].Value = true; // Or some value appropriate to your scenario
        }

        this.grdPayVis.UpdateData();
    }   

默认情况下,网格允许您 select 许多单元格、行或列。但是,当有一个单元格处于编辑模式时,您不能 select 任何其他单元格。同样,当您单击 Select[=27= 中的任何单元格时,您已将 CellClickAction 设置为 Edit ] 列,它会进入编辑模式,并且在退出编辑模式之前无法 select 编辑更多单元格。