![]() |
Tag-Werte von Items in TMS Komponente auslesen
Hallo,
ich möchte die Tag-Werte der SideNavBar-Komponente von TMS im Item_Click Ereignis auslesen. Das Zuordnen der Tag-Werte geschieht im Page_Load Ereignis in der 6. Zeile von unten. Das funktioniert auch einwandfrei. Es ist nur eine SideNavBar auf dem Formular. Erzeugt werden dann div. Panels mit div. Items.
Delphi-Quellcode:
Nun sollte man auf den Tag-Wert beim Item_Click Ereignis zurückgreifen können.
procedure TWebForm1.Page_Load(sender: System.object; e: System.EventArgs);
var HKDataRow, WGDataRow: DataRow; MyRelation: DataRelation; objCommand: OleDbCommand; DA: OleDbDataAdapter; begin if not IsPostBack then begin objCommand := OleDbCommand.Create; objCommand.Connection := OleDbConnection1; DA := OleDbDataAdapter.Create; objCommand.CommandText := 'SELECT * FROM HAUPTKATEGORIEN'; DA.SelectCommand := objCommand; // DataSet mit Hauptkategorie-Tabelle füllen DA.Fill(DS1, 'HKTable'); objCommand.CommandText := 'SELECT * FROM WGRUPPEN'; DA.SelectCommand := objCommand; // DataSet mit Warengruppen-Tabelle füllen DA.Fill(DS1, 'WGTable'); // Beziehung von Warengruppen zu Hauptkategorie-Tabelle erstellen // Schlüssel-Werte - Hauptkegorien/GruppenNr --> WGruppen/Obergruppe MyRelation := DataRelation.Create('rel', DS1.Tables['HKTable'].Columns['GRUPPENNR'], DS1.Tables['WGTable'].Columns['OBERGRUPPE'], false); DS1.Relations.Add(MyRelation); // Alle Panels löschen SideNavBar1.Panels.Clear; // Alle Datensätze der Hauptkategorie-Tabelle durchlaufen for HKDataRow in DS1.Tables['HKTable'].Rows do begin np := TMSWebControls.SideNavPanel.Create; // Panel erzeugen np.Text := HKDataRow.Item[1].ToString; // Panel Text nach Datenfeld benennen np.IsExpanded := false; SideNavBar1.Panels.Add(np); // Panel hinzufügen // Alle Kind-Werte der Hauptkategorie-Tabelle abrufen for WGDataRow in HKDataRow.GetChildRows('rel') do begin ni := TMSWebControls.SideNavItem.Create; //Item erzeugen ni.Tag := StrToInt(WGDataRow.Item[0].ToString); //Warengruppen-ID in Tag speichern np.Items.AddChild(ni, WGDataRow.Item[1].ToString + ni.Tag.ToString); // Item zum Panel hinzufügen end; end; end; end; Auf Nachfrage bei TMS haben die mir die Antwort mit einem C# Beispiel genannt. Zitat:
Ich habs so versucht:
Delphi-Quellcode:
Da bekomm ich aber den Compiler-Fehler: Inkompatible Typen SideNavPanel und Object!
procedure TWebForm1.SideNavBar1_ItemClick(sender: System.Object; e: TMSWebControls.SideNavBarEventArgs);
var snp : SideNavPanel; sni : SideNavItem; begin snp := SideNavPanel.Create; sni := SideNavItem.Create; snp := SideNavBar1.Panels[e.PanelIndex]; sni := SideNavItem(snp.Items[e.ItemIndex]); Label1.Text := sni.Tag.ToString; end; Was mache ich falsch ? |
Re: Tag-Werte von Items in TMS Komponente auslesen
Delphi-Quellcode:
procedure TWebForm1.SideNavBar1_ItemClick(sender: System.Object; e: TMSWebControls.SideNavBarEventArgs);
var snp : SideNavPanel; sni : SideNavItem; begin snp := SideNavPanel(SideNavBar1.Panels[e.PanelIndex]); sni := SideNavItem(snp.Items[e.ItemIndex]); Label1.Text := sni.Tag.ToString; end; Die beiden creates sind von dir erzeugte Speicherlöcher und nicht erforderlich. SideNavBar1.Panels[e.PanelIndex] liefert dir nur ein TObject, das es vom Typ SideNavPanel ist, verrätst du dem Compiler durch den expliziten Type-Cast |
Re: Tag-Werte von Items in TMS Komponente auslesen
Ok, hab ich versucht.
Das Label1, das auch auf meinem Formular liegt, zeigt mir aber jetzt beim Klicken auf ein Item immer 0 an. Hängt das mit dem Postback zusammen oder wird das Tag nicht richtig ausgelesen? Also wie gesagt: ich hab nur die SideNavBar und ein Label-Element auf meinem Formular. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz