2009-12-17 43 views
1

J'utilise le contrôle DataRepeater à partir du Visual Basic Power Pack dans mon application Win Forms C#. Le contrôle n'est pas lié, fonctionne en mode virtuel.Désactiver les contrôles sur certains éléments dans le contrôle DataRepeater

J'affiche plusieurs éléments dans ce contrôle. Selon certains critères, je veux désactiver un bouton dans le contrôle.

J'ai essayé ce qui suit en cas _DrawItem du répéteur de données:

private void dataXYZ_DrawItem(object sender, DataRepeaterItemEventArgs e) 
{ 
    int Item=e.DataRepeaterItem.ItemIndex; 
    dataXYZ.CurrentItem.Controls["buttonSomething"].Enabled = SomeFunc(Item); 
} 

Ce qui se passe est le bouton est activé ou désactivé en fonction de ce que devrait être le dernier élément de la commande.

Une idée de comment je peux contrôler activer l'état sur une base article par article?

Merci

Répondre

3

Si vous souhaitez boucler vos articles de DataRepeater, vous pouvez faire quelque chose comme ceci:

  //Store your original index 
      int intOldIndex = dataRepeater1.CurrentItemIndex; 

      //Loop through datarepeater items and disabled them 
      for (int i = 0; i < dataRepeater1.ItemCount; i++) 
      { 
       //Just change the CurrentItemIndex and the currentItem property will get the element from datarepeater! 
       dataRepeater1.CurrentItemIndex = i; 
       dataRepeater1.CurrentItem.Enabled = false; 

       //You can access some controls in the current item context 
       ((TextBox)dataRepeater1.CurrentItem.Controls["txtName"]).Text = "My Name"; 

       //If your textbox is inside a groupbox, for example, 
       //you'll need search the control because it is inside another 
       //control and the textbox will not be accessible 
       ((TextBox)dataRepeater1.CurrentItem.Controls.Find("txtName",true).FirstOrDefault()).Text = "My Name"; 
      } 

      //Back your original index 
      dataRepeater1.CurrentItemIndex = intIndex; 
      dataRepeater1.CurrentItem.Enabled = true; 

Hope it helps!

Cordialement!