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:
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;
Nun sollte man auf den Tag-Wert beim Item_Click Ereignis zurückgreifen können.
Auf Nachfrage bei TMS haben die mir die Antwort mit einem C# Beispiel genannt.
Zitat:
You can do this using code similar to:
protected void SideNavBar1_ItemClick(object sender, TMSWebControls.SideNavBarEventArgs e)
{
SideNavPanel snp = (SideNavPanel)SideNavBar1.Panels[e.PanelIndex];
SideNavItem sni = (SideNavItem)snp.Items[e.ItemIndex];
label1.Text = sni.Tag;
}
Kann mir jemand helfen dies in Delphi umzuschreiben? C# ist nicht meine Stärke!
Ich habs so versucht:
Delphi-Quellcode:
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;
Da bekomm ich aber den Compiler-Fehler: Inkompatible Typen SideNavPanel und Object!
Was mache ich falsch ?