无法使用复选框列在infragistics ultrawingrid上选择多行

时间:2015-11-04 20:56:52

标签: c# checkbox infragistics ultrawingrid

我有以下代码成功地将一个复选框列添加到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; 

}

2 个答案:

答案 0 :(得分:0)

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

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");  
.....

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

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...

     }
}

答案 1 :(得分:0)

我不确定你实际想要实现的目标。当您将选择列中的 CellClickAction 设置为编辑,然后单击此列中的任何单元格时,网格将选择单元格,而不是行。网格具有Selected属性,该属性公开三个集合 - 行,列和单元格。在您的情况下,您正在更改选定的单元格,不要更改选定的行集合。如果需要选择行,则需要在选择列中将 CellClickAction 设置为 RowSelect 。如果您需要同时修改选择列的复选框状态,您可以像这样处理网格的 AfterSelectChange 事件:

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();
    }   

默认情况下,网格允许您选择多个单元格,行或列。但是,当单元格处于编辑模式时,您无法选择任何其他单元格。再次,当您单击选择列中的任何单元格时,将 CellClickAction 设置为编辑,它进入编辑模式,不再选择单元格在退出编辑模式之前。