2012-08-30 8 views
6

Esto está relacionado con un GridView de un DevExpess XtraGrid.Quitar el icono de Drilldown Plus (+) del MasterRow de XtraGrid GridView cuando ChildRow no tiene datos

Necesito eliminar el drilldown plus icon (+) de cualquier MasterRow en un GridView que no tenga ningún dato para su ChildRow.

Actualmente, todas las filas (MasterRows) en mi GridView muestran el drilldown plus icon (+). Cuando se hace clic en drilldown plus icon (+), ChildRow se muestra con los datos apropiados. Pero, si el ChildRow no tiene datos, entonces el ChildRow no se muestra (expandido). Necesito hacer el drilldown plus icon (+) invisible para que el usuario no lo vea si no hay datos en el ChildRow.

Tengo una función que comprueba si hay datos disponibles para el ChildRow, lo que permite que el ChildRow se muestre (expanda) o no.

He usado GridView.OptionsView.ShowDetailButtons pero eso oculta el drilldown plus icons (+) en todas las filas. Eso no funciona para mí, ya que solo necesito ocultarlo si no hay datos para el ChildRow.

Aquí está el código que tengo hasta ahora:

private void gridView1_MasterRowGetRelationCount(object sender, MasterRowGetRelationCountEventArgs e) 
{ 
    e.RelationCount = 1; 
} 

private void gridView1_MasterRowEmpty(object sender, MasterRowEmptyEventArgs e) 
{ 
    e.IsEmpty = IsRelationEmpty(e.RowHandle, e.RelationIndex); 
} 

bool IsRelationEmpty(int rowHandleX, int relationIndex) 
{ 
    Tuple<string, double, double> row = (Tuple<string, double, double>)gridView1.GetRow(rowHandleX); 
    return rowHandleX == DevExpress.XtraGrid.GridControl.InvalidRowHandle || _tfs._dataDictionary[row.Item1.ToString()].Item2.Count == 0; 
} 

private void gridView1_MasterRowGetChildList(object sender, MasterRowGetChildListEventArgs e) 
{ 
    if (IsRelationEmpty(e.RowHandle, e.RelationIndex)) 
    { 
     return; 
    } 

    Tuple<string, double, double> row = (Tuple<string, double, double>)gridView1.GetRow(e.RowHandle); 
    e.ChildList = _tfs._dataDictionary[row.Item1.ToString()].Item2.ToList(); // _tfs.DictionaryToList(); 
} 

private void gridView1_MasterRowGetRelationName(object sender, MasterRowGetRelationNameEventArgs e) 
{ 
    e.RelationName = "Work Items with no Size Estimate:"; 
} 

cualquier dirección o sugerencias serán bienvenidos.

Gracias de antemano,

Marwan (^_^)

Respuesta

6

que sugieren que sigue este hilo DevExpress - How to hide disabled expand/collapse buttons for master rows without detail records

El XtraGrid no proporciona una opción para ocultar maestro-detalle expanda botones para detalles vacíos. Puede evitar esta limitación a través del evento CustomDrawCell.

Aquí es el código necesario:

private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { 

    GridView view = sender as GridView; 
    if(e.Column.VisibleIndex == 0 && view.IsMasterRowEmpty(e.RowHandle)) 
     (e.Cell as GridCellInfo).CellButtonRect = Rectangle.Empty; 
    } 
} 

Esperanza esta ayuda ..

+0

Esto funcionó muy bien ... Gracias! –

Cuestiones relacionadas