2012-12-23 10 views

risposta

8

È possibile utilizzare l'evento GridView.CustomRowCellEdit:

//... 
var repositoryItemTextEditReadOnly = new DevExpress.XtraEditors.Repository.RepositoryItemTextEdit(); 
repositoryItemTextEditReadOnly.Name = "repositoryItemTextEditReadOnly"; 
repositoryItemTextEditReadOnly.ReadOnly = true; 
//... 
void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) { 
    if(e.RowHandle == 0) 
     e.RepositoryItem = repositoryItemTextEditReadOnly; 
} 
+0

Ottima risposta, cercato di trovare un buon modo per farlo più a lungo di quanto mi piaccia ammettere! :-) – DashRantic

0

È possibile utilizzare l'evento ColumnView.ShownEditor:

void gridView1_ShownEditor(object sender, EventArgs e) 
{ 
    ColumnView view = (ColumnView)sender;   

    view.ActiveEditor.Properties.ReadOnly = view.FocusedRowHandle == 0; 
} 
0

Fonte:How to Conditionally Prevent Editing for Individual Grid Cells

Quando è necessario fare una griglia cella di sola lettura in base a una condizione , L'approccio migliore è quello di utilizzare il ShowingEditor caso di GridView e prevenire la modifica tramite il e.Cancel parametro passato alla manifestazione. Basta impostarlo su True quando è necessario evitare la modifica di .

// disable editing 

private void gridView1_ShowingEditor(object sender, System.ComponentModel.CancelEventArgs e) { 

    GridView view = sender as GridView; 
     e.Cancel = view.FocusedRowHandle == 0; 
} 

Fonte -How to display disabled buttons for particular cells within a ButtonEdit column
Un altro approccio è che assegnare una lettura di controllo editor di solo repository come suggerito @DmitryG e ho anche implementare in questo modo alcuni momenti in cui c'era una colonna che contiene un pulsante.

Nel tuo caso dovresti creare due elementi di repository TextEdit. Uno con il pulsante abilitato e un altro con il pulsante disabilitato. Quindi gestire l'evento GridView.CustomRowCellEdit e passare l'elemento di repository necessario al parametro e.RepositoryItem in base a una condizione specifica . Per ulteriori informazioni, consultare l'argomento della guida Assigning Editors to Individual Cells.

enter image description here

private void gridView1_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e) 
{ 
    if (e.Column.Caption == "Any2") 
    { 
     if (e.RowHandle == 0) 
      e.RepositoryItem = columnReadOnlyTextEdit; 
     else 
      e.RepositoryItem = columnTextEdit;  
    } 
} 

Riferimenti:
How to customize the Look-And-Feel of my grid cells
How to make my grid columns read-only