ich spiele mit WebForms2.0 mit MySQL-Datenbanken und SQLDataSource-Komponenten.
Ich habe einen ArtikelView(mit Gruppen(+id), Herstellern(+id), Einheiten(+id), usw...) erstellt.
Im Kopf der Page gibt es Comboboxen(ALLE Gruppen, ALLE Hersteller, Alle Einheiten, Artikel(TextBox), usw.)
- Ich möchte nun nach den "eingestellten Parametern" (aus dem Pagekopf) die entsprechenden Artikel suchen...
- Es soll aber auch möglich sein zB. aus ALLEN Gruppen, oder ALLEN Herstellen einen ArtikelNamen zu suchen...
- Oder aus der Gruppe "Toppings" ALLE Kiwi-Toppings ALLER Hersteller zu suchen.
(Also eine "*" Suche)
Ich habe folgenden Code gebaut:
<asp:SqlDataSource ID="SqlDS_Artikel" runat="server"
ConnectionString="<%$ ConnectionStrings:DB_Con %>"
ProviderName="<%$ ConnectionStrings: DB_Con.ProviderName %>"
SelectCommand="SELECT * FROM artikelpreise WHERE Gruppen_ID like ? AND Hersteller_ID like ?">
<SelectParameters>
<asp:ControlParameter ControlID="DDL_Gruppe" Name="Gruppen_ID" PropertyName="SelectedValue" Type="String" />
<asp:ControlParameter ControlID="DDL_Hersteller" Name="Hersteller_ID" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
Im "Codebehind" füge ich folgenden Code hinzu(um die "ALLE" Funktion zu bauen:
protected void DDL_Gruppe_DataBound(object sender, EventArgs e)
{
DDL_Gruppe.Items.Insert(0, new ListItem("ALLE(*)", "%"));
}
protected void DDL_Hersteller_DataBound(object sender, EventArgs e)
{
DDL_Hersteller.Items.Insert(0, new ListItem("ALLE(*)", "%"));
}
Die Frage nun:
Ist es richtig, dass ich die "SelectedValues" in einen String zwinge um diese mit einem "LIKE %" aus der DB zu holen?
Eigentlich sind die SelectedValues ja INT32 und ich frage sie ja per "=" ab.
Ich habe Sorgen, das das "like" böse Performance kostet.
Was ist der richtige Weg?
(Ich bitte um ein paar Tipps)
Vielen Dank im Voraus...
UltraEdit.