[asp.net]query results in array zetten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een zoek functie in mijn eigen custom cms. nou heb ik dus een query die meerdere resultaten terug geeft. Zodra ik deze in een literal zet laat die alleen het laatste resultaat zien.
Hij schrijft het vorige resultaat dus steeds over.

Na wat onderzoek te hebben gedaan, kan ik dit dus bereiken door deze query in een array te zetten en dan met een foreach loop erdoor heen te lopen. Nou heb ik dus het probleem dat ik hem niet in deze array krijg. Ik kan er ook niet over vinden hoe ik dit nou succesvol er wel in krijg.
Ik laat mijn query's afvuren d.m.v. een dataset.

dit heb ik nu:
C#:
1
2
3
4
5
6
7
Text = "%" + TextBox1.Text + "%";
        String[] stringarray;
        stringarray = new String[] { Convert.ToString(QueriesAdapter.Searchcontent(Text)) };
        foreach (String str in stringarray)
        {
            Literal1.Text += str;
        }


met grote dank

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:15
Ik zou loopen over de rows in je data table en dan in de loop de waarde van het gewenste veld aan de literal toevoegen.

Kijk ook eens naar de StringBuilder class, dat performt een stuk beter dan in een loop string aan elkaar plakken. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
er is geen sprake van een data table, het is gewoon een losse table adapter met een paar query's erin. voor de duidelijkheid is dit de query:
SQL:
1
2
3
4
 SELECT        Pages.Naam
FROM            Pages INNER JOIN
                         Contents ON Contents.Page_id = Pages.Id
WHERE        (Contents.[Content] LIKE @search)


ik zal even naar de stringbuilder class kijken :)

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Wat voor type object geeft QueriesAdapter.Searchcontent(Text) terug?
Wat je nu doet om een array aan te maken lijkt me niet te gaan werken, want je krijgt nu een array met 1 waarde, namelijk de ToString (wat per definitie geen array is..) van QueriesAdapter.Searchcontent(Text).

Als het type iets is dat IEnumerable implementeert (bijvoorbeeld een List<>) kan je ToArray() gebruiken.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het is opgelost, en inderdaad doormiddel van een list<> te gebruiken :)

dit heb ik uiteindelijk gedaan:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Text = "%" + TextBox1.Text + "%";
        List<string> content = new List<string>();

        using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["EnterprisevoipCMSConnectionString"].ConnectionString))
        {
            String query = "SELECT Pages.Naam FROM Pages INNER JOIN Contents ON Contents.Page_id = Pages.Id WHERE (Contents.[Content] LIKE @search)";
            SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);
            sqlCommand.Parameters.AddWithValue("@search", Text);
            sqlConnection.Open();
            SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection);
            while (sqlDataReader.Read())
            {
               

                content.Add(sqlDataReader.GetString(0));
            }
            sqlDataReader.Close();
        }


        foreach (string searchcontent in content)
            gevonden.Text += string.Format("{0}<br>", searchcontent);

    }

in iedergeval bedankt voor de hulp

[ Voor 10% gewijzigd door Verwijderd op 22-11-2011 15:45 ]


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 03:43
Ik zou dit:
C#:
1
2
foreach (string searchcontent in content) 
            gevonden.Text += string.Format("{0}<br>", searchcontent); 

nog aanpassen naar iets met een StringBuilder. Weet niet om hoeveel resultaten het gaat, maar dit performed voor geen meter.

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

sig69 schreef op woensdag 23 november 2011 @ 12:16:
Ik zou dit:
C#:
1
2
foreach (string searchcontent in content) 
            gevonden.Text += string.Format("{0}<br>", searchcontent); 

nog aanpassen naar iets met een StringBuilder. Weet niet om hoeveel resultaten het gaat, maar dit performed voor geen meter.
En dan dus ook niet myBuilder.AppendFormat("{0}<br>", searchcontent), dat is niet veel beter ;)
C#:
1
2
3
4
5
foreach (string searchcontent in content) 
{
  bldr.Append(searchContent);
  bldr.Append("<br>");
}

Scheelt nog een stapel extra overhead.

Professionele website nodig?

Pagina: 1