Avatar billede area404 Nybegynder
07. april 2009 - 20:26 Der er 6 kommentarer og
1 løsning

SQL betingelse fra CheckBoxList

Hej med jer..

Jeg prøver på at lave nogle udtræk fra en database hvor en CheckBoxList bestemmer hvilke poster skal vises.

Problemet er at den indbyggede funktion i ASP.net kun udlæser poster fra første markeret "item", selv om alle eller flere items er checked i min listbox.

Min SQL ser ud som følgende:
SelectCommand="SELECT * FROM [RSS] WHERE ([Channel_titel] LIKE '%' + @Channel_titel + '%') ORDER BY [pubdate] DESC">

                        <SelectParameters>
                            <asp:ControlParameter ControlID="CheckBoxList1" Name="Channel_titel"
                                PropertyName="SelectedValue" Type="String" />
                        </SelectParameters>

Håber nogen kan hjælpe.
/Ron
Avatar billede SebastianN Nybegynder
07. april 2009 - 22:31 #1
Jeg sad og skrev en længere smøre med pseudokode... men det nytter ikke, når jeg ikke kender dit erfaringsniveau.

Jeg ville iterere igennem ItemCollection'en i CheckBoxListen, finde ud af hvilke Items som var valgt, og på den måde enten bygge en streng med kriterierne, adskilt af OR ... og bruge den som parameter i en SqlCommand.
Avatar billede area404 Nybegynder
08. april 2009 - 14:35 #2
Jeg må sige jeg er ikke super hård til .Net
Kan du vise et eksempel? Kan man bare bruge en for loop til Listbox...?
Avatar billede area404 Nybegynder
08. april 2009 - 15:48 #3
Jeg kan sagtens lave en loop i min cs-kode som tjekker hvilke items er checked, men hvordan får jeg resultatet over i min SQL-streng på min aspx side?
Avatar billede SebastianN Nybegynder
08. april 2009 - 16:19 #4
Nu forudsætter vi at du har, vha. en foreach- eller for-løkke, bygget følgende kriterie op, som hedder sqlKriterieString:

"(Channel_titel LIKE '%hans%' OR Channel_titel LIKE '%grethe%' OR Channel_titel LIKE '%heksen%')"

Jeg går ud fra at den kontrol du bruger, er en SqlDataSource...

Så vil du fra codebehind, evt. i din SqlDataSource.Selecting event, kunne tilgå SelectCommand'ens parametercollection således:

dinSqlDataSource.SelecCommand.Parameters["@Channel_titel"].Value = sqlKriterieString;

Læs mere her...
http://msdn.microsoft.com/en-us/library/z72eefad.aspx

Det lyder for mig som om du vil have mere gavn af at læse mere om ASP.NET og databaseadgang, generelt, end blot forsøge at løse enkeltstående problemstillinger som denne.
Avatar billede area404 Nybegynder
14. april 2009 - 08:47 #5
Jeg har studeret "Using Parameters with the SqlDataSource Control" og kommet frem til følgende kode:

ASPX:

                            SelectCommand="SELECT * FROM [RSS] WHERE [Channel_titel] LIKE '%' + @list_select + '%'"
                            OnSelecting="SqlDataSource2_Selecting">

                      <SelectParameters>
                          <asp:Parameter Name="@list_select" Type="String" />
                      </SelectParameters>
                    </asp:SqlDataSource>
CS:

    protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        channel_values = "hej";
        SqlDataSource2.SelectParameters.Add("list_select", channel_values);
        SqlDataSource2.SelectParameters["list_select"].DefaultValue = channel_values.ToString();


        test.InnerHtml = SqlDataSource2.SelectParameters["list_select"].DefaultValue.ToString();
    }

test.innerhtml udskriver min "channel_values" streng, men jeg får stadig ingen udtræk fra databasen..

Desuden er jeg lidt usikker omkring hvornår man bruger "@" til parameter-navn og hvornår ikke..?!
Avatar billede area404 Nybegynder
20. april 2009 - 21:16 #6
SebastianN: Du har hjulpet mig godt på vej, jeg har oprettet et mere specifikt spørgmsål: http://www.eksperten.dk/spm/872318
Angiv svar for points.
Avatar billede SebastianN Nybegynder
23. april 2009 - 12:28 #7
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester