2012-12-23 8 views

Odpowiedz

8

Można użyć zdarzenia 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

Doskonała odpowiedź, próbuje dowiedzieć się dobrym sposobem, aby to zrobić na dłużej niż Zależy mi się przyznać! :-) – DashRantic

0

Można użyć zdarzenia ColumnView.ShownEditor:

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

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

Źródło:How to Conditionally Prevent Editing for Individual Grid Cells

Kiedy trzeba wykonać siatkę komórka tylko do odczytu na podstawie warunku , Najlepszym podejściem jest użycie ShowingEditor wydarzenie GridView i możliwość edycji przez e.Cancel parametr przekazany do imprezy. Po prostu ustaw wartość True, gdy jest to konieczne, aby zapobiec edycji .

// disable editing 

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

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

Source -How to display disabled buttons for particular cells within a ButtonEdit column
Innym podejściem jest to, że przypisanie tylko do odczytu repozytorium kontroli edytora jak sugeruje @DmitryG i ja również wdrożyć że drogę kilka razy, kiedy nie było kolumną, która zawiera przycisk.

W twoim przypadku powinieneś utworzyć dwa elementy repozytorium TextEdit. Jeden z aktywowanym przyciskiem, a drugi z wyłączonym przyciskiem. Następnie należy obsłużyć zdarzenie z GridView.CustomRowCellEdit i przekazać niezbędny element repozytorium do parametru e.RepositoryItem zgodnie z konkretnym warunkiem . Dodatkowe informacje można znaleźć w temacie pomocy 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;  
    } 
} 

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

Powiązane problemy