2010-11-08 4 views
0

Je veux activer/désactiver un bouton trouvé dans chaque ligne de ma commande de grille. Je ne suis pas sûr de pouvoir y accéder par le code. Je pense qu'il serait dans les méthodes GridView1 .....Accéder à un bouton dans un contrôle Grid Prgrammically DevExpress

+0

Pourriez-vous s'il vous plaît expliquer comment vous Ajout de boutons aux lignes gridControl? Veuillez également expliquer pourquoi vous devez accéder à ces boutons. –

+0

J'ai ajouté les boutons en créant une nouvelle colonne dans le contrôle de la grille et en définissant la propriété columnEdit sur un simple bouton. J'ai besoin d'accéder à la propriété des boutons activés lorsque le formulaire se charge en fonction d'une autre valeur de colonne que le bouton peut ou non être activé sur chaque ligne. –

Répondre

1

Vous pouvez désactiver le bouton (ou mieux encore, l'édition complète d'une cellule spécifique) en manipulant simplement l'événement ShowEditor ... Vous pouvez ensuite inspecter le les valeurs des autres colonnes, puis annulez l'édition de cette cellule en fonction de vos souhaits. Ici va un code pour un exemple de programme qui vous montre exactement comment faire:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using DevExpress.XtraGrid.Views.Grid; 
using DevExpress.XtraGrid; 

namespace GridButtonDisable 
{ 

public partial class Form1 : Form 
{ 
    public class MyData 
    { 
     public int Number { get; set; } 
     public bool Even { get { return Number % 2 == 0; } } 
    } 

    public Form1() 
    { 
     InitializeComponent(); 

     List<MyData> List = new List<MyData> 
     { 
      new MyData() { Number = 1 }, 
      new MyData() { Number = 2 }, 
      new MyData() { Number = 5 }, 
      new MyData() { Number = 7 }, 
      new MyData() { Number = 10 }, 
     }; 

     gridControl1.DataSource = List; 
     gridView1.ShowingEditor += gridView1_ShowingEditor; 
    } 

    private void gridView1_ShowingEditor(object sender, CancelEventArgs e) 
    { 
     GridView view = sender as GridView; 
     if (view.FocusedColumn.Name == "gridButtonCol" && 
      !(bool)view.GetRowCellValue(view.FocusedRowHandle, "Even")) 
      e.Cancel = true; 
    } 
} 

Ce programme est assez simple. Vous devez supposer que votre colonne d'édition de bouton s'appelle gridButtonCol ... Je teste la valeur de la colonne Even de la classe MyData que j'ai créée pour cet exemple, vous pouvez faire ce que vous voulez et vérifier la condition que vous aimez ici.

Si vous définissez la propriété e.Cancel des CancelEventArgs de l'événement ShowingEditor, la cellule ne sera pas modifiable et l'éditeur de bouton ne répondra pas aux clics de l'utilisateur ...

Questions connexes