Public Sub GridChange(ByVal Sender As Object, ByVal e As DataGridPageChangedEventArgs) dgSearchResult.CurrentPageIndex = e.NewPageIndex End Sub
Og hvis jeg fjerner onpageindexchanged="GridChange", så siger den at onitemdatabound="Item_Bound_Count" eventet ikke tager den rigtige parameter for paging som er e As DataGridPageChangedEventArgs i stedet for DataGridItemEventArgs?
gridchange ?! jaja, kald det hvad du vil, men det er nemmere for andre at læse din kode hvis du kalder din procedure det samme som event-navnet... altså
dgSearch_OnPageIndexChanged istedet for GridChange og dgSearch_OnItemDataBound istedet for Item_Bound_Count... !
Cyberfessor der hvor der står dgSearch.DataSource = CreateDataSource() ikke. Den CreateDataSource() har jeg selvfølgelig lavet om til at kalde min funktion, som hedder "SearchCatalog" og som tager et par parametre som udfører søgningen.
Den kalder jeg sådan her:
Sub dgSearch_OnPageIndexChanged(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs) dgSearchResult.CurrentPageIndex = e.NewPageIndex
Dim SearchString As String = Request.Params("Search")
Dim allWords As String = Request.Params("AllWords") Dim products As ProductDb = New ProductDb()
dgSearchResult.DataSource = products.SearchCatalog(SearchString, allWords) dgSearchResult.DataBind() End Sub
Men jeg får følgende fejl:
System.Web.HttpException: Cannot compute Count for a data source that does not implement ICollection
Public Function SearchCatalog(ByVal SearchString As String, ByVal allWords As String) As SqlDataReader Dim myConnection As New SqlConnection(connectionString) Dim myCommand As New SqlCommand("sp_SearchCatalog", myConnection)
If allWords.ToUpper = "TRUE" Then myCommand.Parameters.Add("@AllWords", SqlDbType.Bit, 1) myCommand.Parameters("@AllWords").Value = 1 Else myCommand.Parameters.Add("@AllWords", SqlDbType.Bit, 1) myCommand.Parameters("@AllWords").Value = 0 End If
Dim wordsCount As Integer = words.Length Dim index As Integer = 0 Dim addedWords As Integer = 0
While addedWords < 10 And index < wordsCount If Len(words(index)) > 2 Then addedWords += 1 myCommand.Parameters.Add("@Word" + addedWords.ToString, words(index)) End If index += 1 End While
myConnection.Open() Return myCommand.ExecuteReader(CommandBehavior.CloseConnection) End Function
ej, jeg ved ikke lige hvorfor den brokker sig, men umiddelbart lyder det som om at den ikke kan lave paging på en Reader... jeg bruger personligt altid en adapter istedet, som jeg så bruger til at fylde en DataTable, det er lidt mere fleksibelt efter min mening... og det ved jeg virker.
hvad mener du med at der ikke er nogen paging på...? hvad sker der helt præcis, og husker du, at du kun skal binde data til datagriddet i pageload, hvis siden ikke er postback?
If dgSearchResult.Items.Count = 0 Then lblSearchNum.Text = "<font size=""2""><b>Der er desværre igen resultater, for søgeordet!</b></font>" Else lblSearchNum.Text = "<font size=""2""><b>Antal resultater: " & dgSearchResult.Items.Count.ToString() & "</b></font>" End If
jeg har kodet i... ja... 3½ år eftehånden... startede med asp (vbscript) og har også lavet en del i vba og vb
ang. .net har jeg leget snart et år med webforms (asp.net) og ½ år med Winforms (windowsprogrammer)... jeg startede i sin tid med vb.net, da det jo llå lige for, men efter at have rodet lidt med java og javascript skiftede jeg til c# da syntaksen er 99% lig med dem, og også mere effektiv end vb (synes jeg)
bg>> det er fordi at dgSearchResult.Items.Count tager antal af elementer der er i datagriddet for den side du viser, og altså ikke for HELE datagriddet. For at finde ud at hvor mange resultater du fik skal du lave en count på din datasource og ikke datagriddet.
pt er jeg i lære i en virksomhed, hvor jeg arbejder med deres web som det primære. ASP.NET har jeg kun arbejdet med i ca. 6 mnd i VB.NET. I min fritid læser jeg Datanom enkelt fag.
Min tidligere erfaringer med at kode, er ikke så store. ASP i ca. 1 år. Indtil jeg kom i gang med ASP.NET. Har ikke rørt ASP 3.0 siden! HEhe
Tror du at du kommer til det? Med mindre det er noget meget simpelt....... :-)
bambinogrande>> uhm... mener det hedder Rows.Count i en datatable... hvilket program koder du i? har du ikke nogen form for intellisense? eller er sdk'et altid dejligt at have ved hånden at slå op i.
Hvad er du i lære som? lyder spændende i hvert fald.
jo, jeg laver da stadigvæk en del ASP, primært når jeg er i projekter sammen med andre... hvis jeg sidder og roder med en hjemmeside for mig selv, så er det altid asp.net. www.it-arkiv.dk er jeg igang med lige nu, og det ligesom er den laveste fællesnævner for holdet. jeg kan asp.net, medions kan jsp så det er lidt svært ;)
ang. de pile så ved jeg ikke lige... uden at bruge custompaging, men det er lidt omstændigt at få til at virke :(
man kan godt oprette constraints i MySQL, men SP det klarer den ikke - men jeg bruger også kun MySQL til hobbyprojekter ellers så bruger jeg MS SQL eller Oracle. De er dog lidt dyre til hobbyprojekter :-)
askhoej>>men nu er der jo ingen der forbyder en at have flere databaser på en MS SQL server... så har man først fået betalt afdragende på sådan en fætter, så skal det jo udnyttes ;)
ellers har jeg rodet med MSDE de sidste par uger... og jeg begynder så småt at fattet konceptet i den, så mon ikke at den snart bliver min foretrukne til "hobbyprojekter" frem for access ;) access har dog en dejlig fordel, og det er at den er filbaseret... man kan copy/paste den uden at bekymre sig om at destionationen nu også har det og det installeret og sat rigtig op.
Og SPROC'S rykker for vildt! JJJHHIIAAAA kan du anbefale et par gode bøger om SPROC's?
;-) hehe
Okay....... har du egen virksomhed med nogen andre eller hvad? Dammmmmmmm............. "Kortlægning af IT-arkivalier i Frederikshavn, Hals og Aalborg kommuner" lyder vildt! :-)
Hvad syntes du er fedest! ASP.NET eller JSP?
Lige inden jeg gik i gang med ASP.NET kiggede jeg faktisk lidt på JSP. Men på det tidspunkt blev jeg ikke ligefrem forelsket i syntaxen! hehe....
Jeg koder i VS.NET Enterprise Dev 2002, og ja jeg bruger SDK'et en del.
Jeg læser Multimedia Integrator med speciale i web udvikling.
Jeg håber på at få job efter uddannelsen der hvor jeg er elev. Jeg er færdig til sommer. Hvis ikke så læser jeg datanom som heltids uddannelse. Mangler 4 fag. Har faktisk lige været til mundtlig eksamen i ASP.NET i VB.NET! Hehe........ fik 9!
Jeg prøver lige lidt med Rows.Count..... har og mine sessions kører også!
bg>> wops... mente da http://www.itarkiv.dk/... dejligt at man kan adressen til de hjemmesider man selv laver ;) hehe... du kan se udviklingen her itarkiv.burningice.dk
Jeg må nok personligt indrømme at jeg ikke kan se det fede i MySQL.. udover at det er gratis og performer okay. Selv bruger jeg mest access og MS SQL, og tør efterhånden også at bruge MSDE til mine projekter. Alle sammen bygger på Microsofts SQL-kerne, så det er dejligt nemt at opgraderer fra en version til en anden da de er fuldt kompatible :)
jeg må ærligt indrømme at jeg ikke kender alverdens til JSP, andet end at det er java brugt på hjemmesider... jeg har den forestilling at jsp er det for java, som asp.net er for c#... om man bruger det ene eller det andet er vel en vanesag, og måske et principspørgsmål.. du ved... "jeg vil i hvert fald ikke røre noget MS har lavet".
Nu hvor du koder i et så lækkert IDE, så var det måske nogen gange en ide lige at slå koldt vand i blodet og bruge tænkeren lidt ;) jeg mener... ok, du har en DataTable... du vil gerne vide hvor mange rækker der i den ok... ok, en række hedder Row på engelsk.. lad os prøve at se hvad man kan finde der... straks popper Intellisense-tingen op, og du finder noget der hedder Rows. Fedt nok... du trykker på . igen, og en ny popup kommer frem, og som noget af det første finder du Count... du higlighter den og se i hjælp-boksen at der står at denne bliver brugt til at tælle andtal rækker i en tabel ;)
Jeg har selv lært utroligt meget på den måde, og det er tit jeg sparer meget tid lige at køre lidt op og ned og vælge noget der lyder logisk, istedet for at slå op i sdk'et hele tiden :)
Ellers har jeg da mit eget firma, sammen med to andre... så det er hyggeligt nok, men som du kan læse på min hjemmeside (www.burningice.dk) så går jeg stadigvæk i skole (HTX)... lidt speciel skole (www.it-college.dk) men det er stadigvæk en skole ;)
Dim dt As DataTable = products.SearchCatalog(SearchString, allWords) lblCount.Text = dt.Rows.Count dgSearchResult.DataSource = dt dgSearchResult.DataBind()
If dt.Rows.Count = 0 Then lblCount.Text = "<font size=""2""><b>Der er desværre igen resultater, for søgeordet!</b></font>" Else lblCount.Text = "<font size=""2""><b>Antal resultater: " & dt.Rows.Count & "</b></font>" End If End If End Sub
hmm... det ved jeg sq ikke... du har jo ikke ligefrem nogen kode der får dem til at forsvinde...
jeg kom dog lige i tanke om en ting... paging kan jo godt slås til og fra programmeringsmæssing, så du kan jo lave en tjek i din Page_Load, om at hvis dt.Rows.Count er under 10, så skal paging slås fra ;)
det er de der gule labels der popper ud... der står tit noget i retningen af (int) Returns the number of System.Data.DataTable.Rows in the System.Data.Table
hygge hejsa.. godt du fik det til at virke... det er tit man ikke kan se skoven for træer hvis man sidder for længe med det... der kan det tit betale sig at tage 15 minutters pause og tænke på noget andet ;)
jeg skal også til at hjem af, så jeg siger fortsat god dag og tak for point og accepteret svar :)
Synes godt om
Ny brugerNybegynder
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.