Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SqlDataSource - Selects definieren

  Alt 2. Mai 2009, 11:40
Hallo,

ich habe es jetzt so gelöst, dass ich die Abfrageergebnisse sequenziell in Labels.Text ablege.
In meinem Fall ist es ohnehin sinnvoll, die "ausgewählten Daten" im Webform anzuzeigen.
Weiterhin habe ich die Teile der WebSite in Panels abgelegt, die ich einfach ein- und ausblende. Ist das zu umständlich oder ein korrekter Weg?

Es scheint mir zumindest inzwischen ein üblicher und korrekter Weg zu sein, Zwischeninformationen in sichtbaren oder versteckten Textobjekten zu speichern, damit die Daten bei der nächsten "Rundreise" (also dem nächsten Seitenaufruf) noch zur Verfügung stehen. (Daneben gäbe es noch die Möglichkeit, Daten in einer Session oder Applikation zu speichern.)

Also sollte meine Lösung soweit korrekt sein.

Nun möchte ich jedoch die Anzahl der Datensätze einer SqlDataSource abfragen. Ich finde jedoch nur die Möglichkeit, die Anzahl der Zeilen eines GridViews zu ermitteln. Allerdings setze ich eine ListBox ein, die offenbar nicht die Anzahl der Records der verbunden SqlDataSource zurück gibt:

Delphi-Quellcode:
namespace;

interface

uses
  System,
  System.Data,
  System.Configuration,
  System.Web,
  System.Web.Security,
  System.Web.UI,
  System.Web.UI.WebControls,
  System.Web.UI.WebControls.WebParts,
  System.Web.UI.HtmlControls;

type
  _Default = public partial class(System.Web.UI.Page)
  protected
    method SqlDataSourceCity_Selecting(sender: System.Object; e: System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs);
    method ListBoxUser_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
    method ListBoxHouse_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
    method ListBoxStreet_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
    method ListBoxCity_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
    method TextBoxPlz_TextChanged(sender: System.Object; e: System.EventArgs);
    method Page_Load(sender: Object; e: EventArgs);
    method DefineData;
  end;

implementation

method _Default.DefineData;
var
  NotFound: Boolean;
begin
  NotFound := False;
  PanelPlz.Visible := LabelPlz.Text <> '';
  PanelCity.Visible := LabelCity.Text <> '';
  PanelCitySelect.Visible := (LabelCity.Text = '') and (LabelPlz.Text <> '') and (not NotFound);
  PanelStreet.Visible := LabelStreet.Text <> '';
  PanelStreetSelect.Visible := (LabelStreet.Text = '') and (LabelCity.Text <> '') and (not NotFound);
  PanelHouse.Visible := LabelHouse.Text <> '';
  PanelHouseSelect.Visible := (LabelHouse.Text = '') and (LabelStreet.Text <> '') and (not NotFound);
  PanelUser.Visible := LabelUser.Text <> '';
  PanelUserSelect.Visible := (LabelUser.Text = '') and (LabelHouse.Text <> '') and (not NotFound);
end;

method _Default.Page_Load(sender: Object; e: EventArgs);
begin
  if LabelPlz.Text = 'then
    DefineData;
end;

method _Default.TextBoxPlz_TextChanged(sender: System.Object; e: System.EventArgs);
begin
  LabelPlz.Text := TextBoxPlz.Text;
  LabelCity.Text := '';
  LabelStreet.Text := '';
  LabelHouse.Text := '';
  LabelUser.Text := '';
  DefineData;
end;

method _Default.ListBoxCity_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
begin
  LabelCity.Text := ListBoxCity.SelectedValue;
  DefineData;
end;

method _Default.ListBoxStreet_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
begin
  LabelStreet.Text := ListBoxStreet.SelectedValue;
  DefineData;
end;

method _Default.ListBoxHouse_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
begin
  LabelHouse.Text := ListBoxHouse.SelectedValue;
  DefineData;
end;

method _Default.ListBoxUser_SelectedIndexChanged(sender: System.Object; e: System.EventArgs);
begin
  LabelUser.Text := ListBoxUser.SelectedValue;
  DefineData;
end;

method _Default.SqlDataSourceCity_Selecting(sender: System.Object; e: System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs);
begin
  PanelNotFound.Visible := ListBoxCity.Rows = 0; // ???????????????????????????????????
  PanelNotFound.Visible := SqlDataSourceCity.Records = 0; // ???????????????????????????????????
  DefineData;
end;

end.

Also in der letzten Ereignisbehandlung möchte ich die Anzahl der gefundenen Datensätze ermitteln und davon abhängig die Abschnitte der Seite (Panels) ein- und ausschalten.
Anbei auch ein kleines Bild der "WebSite".


Wo finde ich denn eine Übersicht über die alle Attribute der Net.-Controls?


stahli
Miniaturansicht angehängter Grafiken
sqldatasourcecount_276.jpg  
  Mit Zitat antworten Zitat