2009-07-25 1 views
1

J'utilise un contrôle AccessDataSource lié à un contrôle DetailsView. Lorsque la sélection ne renvoie aucune ligne (la DetailsView disparaît, mais reste visible), alors je voudrais désactiver d'autres fonctionnalités en désactivant un bouton.Définir le bouton pour désactiver lorsque AccessDataSource n'a pas de lignes

Dans le code C# derrière, je sais que je vais avoir besoin:

ButtonMyButton.enabled = false; 

Cependant, je ne suis pas certain d'un moyen d'obtenir les informations de la AccessDataSource ou DetailsView qui me permettrait de savoir quand mettre la valeur.

J'ai vu d'autres articles qui suggéraient l'exemple pour un article similaire:

 DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); 
     int reorderedProducts = (int)dv.Table.Rows[0][0] 

Pour moi, DataView est dans l'erreur de ne pas avoir l'espace de noms droit, malgré:

using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

Que faire pour désactiver le bouton?

(Bien que ce soit une vraie question de débutant, il est des devoirs de l'école, puisque cela semble être le premier commentaire sur tant de questions simples.)

Répondre

2

Les AccessDataSource hérite de la classe SqlDataSource. Il fournit donc un événement appelé Selected qui est l'événement déclenché après l'opération SELECT. Cet événement doit avoir un paramètre EventArgs du type SqlDataSourceEventArgs).

Ce paramètre EventArgs possède une propriété appelée AffectedRows qui vous indique le nombre de lignes extraites. Si c'est 0, vous pouvez définir la propriété enabled de votre bouton.

private void OnSelectedHandler(Object source, SqlDataSourceStatusEventArgs e) 
{ 
    if (e.AffectedRows == 0) 
    //Disable the button. 
} 

Pour mémoire, la classe DataView réside dans l'espace de noms System.Data. En outre, l'appel Select() sur AccessDataSource signifie que vous exécutez deux instructions select, une pour récupérer les enregistrements (le cas échéant), et l'autre simplement pour compter le nombre d'enregistrements récupérés.

+0

Cela fonctionne parfaitement pour moi. Merci d'avoir pris le temps d'expliquer. J'ai dû changer "privé" en "protégé" pour travailler sur ma page aspx.cs. – Degan

+0

Vous êtes le bienvenu et c'est mon plaisir. :-) – Cerebrus

Questions connexes