2009-07-25 2 views
1

Ich verwende ein AccessDataSource-Steuerelement, das an ein DetailsView-Steuerelement gebunden ist. Wenn die Auswahl keine Zeilen zurückgibt (die DetailsView verschwindet, ist aber immer noch sichtbar), möchte ich einige weitere Funktionen deaktivieren, indem ich eine Schaltfläche deaktiviere.Setzen Sie die Schaltfläche auf deaktiviert, wenn AccessDataSource keine Zeilen enthält

Im C# -Code hinter, ich weiß, ich brauche werden:

ButtonMyButton.enabled = false; 

Ich bin aber unsicher eine Art und Weise die Informationen aus dem Access oder Details zu bekommen, die ich lassen würde wissen, wenn das einstellen Wert.

Ich habe einige andere Artikel zu sehen, die das Beispiel für einen ähnlichen Artikel vorgeschlagen:

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

Für mich Dataview ist in Fehler als nicht den richtigen Namensraum, obwohl sie:

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

Was soll ich tun, um die Schaltfläche zu deaktivieren?

(Während dies eine echte Neuling Frage ist, ist es nicht der Schule Hausaufgaben ist, da dies der erste Kommentar auf so viele einfache Fragen zu sein scheint.)

Antwort

2

Die AccessDataSource erbt von der SqlDataSource Klasse. Es stellt daher ein Ereignis mit dem Namen Selected bereit, bei dem es sich um das Ereignis handelt, das ausgelöst wird, nachdem die SELECT-Operation abgeschlossen wurde. Dieses Ereignis sollte einen EventArgs-Parameter vom Typ SqlDataSourceEventArgs) haben.

Dieser EventArgs-Parameter hat eine Eigenschaft namens AffectedRows, die Ihnen die Anzahl der abgerufenen Zeilen angibt. Wenn es 0 ist, können Sie die Eigenschaft enabled Ihrer Schaltfläche festlegen.

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

Für die Aufzeichnung befindet sich die DataView Klasse im System.Data Namespace. Darüber hinaus bedeutet das Aufrufen von Select() für die AccessDataSource, dass Sie zwei SELECT-Anweisungen ausführen, eine zum Abrufen der Datensätze (falls vorhanden) und die andere zum einfachen Zählen der Anzahl der abgerufenen Datensätze.

+0

Das funktioniert perfekt für mich. Danke, dass du dir die Zeit genommen hast, es zu erklären. Ich musste "privat" zu "geschützt" ändern, um auf meiner aspx.cs-Seite zu arbeiten. – Degan

+0

Sie sind herzlich willkommen und es ist mir eine Freude. :-) – Cerebrus

Verwandte Themen