gregganMedlem sedan jan. 2004678 inlägg ska göra en gästbok i datagrid tänkte jag. vill använda datagridens egen bläddringsfunktion men jag får den inte att fungera. nu har jag inte brytt mig nånting om autogeneratecolumns eller så utan försöker bara få pagingfunktionen att fungera men lyckas inte.
<script runat="server">
sub page_load(src as object, e as eventargs)
dim cn as new oledbconnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\Databaser\tihi.mdb;")
dim cmd as new oledbcommand("select * from guestbook where auserid='" & request.QueryString("userid") & "' order by skickat desc",cn)
dim dr as oledbdatareader
cn.open()
dr=cmd.executereader()
inlagg.datasource=dr
inlagg.databind()
dr.close()
cn.close()
end sub
sub byt_sida(sender as object, e as datagridpagechangedeventargs)
inlagg.currentpageindex = e.newpageindex
inlagg.databind()
end sub
</script>
<asp:datagrid ID="inlagg" width="100%" runat="server" cellpadding="5"
CellSpacing="0"
Font-Name="verdana"
Font-Size="12px"
AllowCustomPaging="true"
AllowPaging="true"
PageSize="2"
OnPageIndexChanged="Byt_Sida"
PagerStyle-Mode="NextPrev"
PagerStyle-HorizontalAlign="Left"
PagerStyle-NextPageText="Nästa"
PagerStyle-PrevPageText="Föregående">
<columns>
<asp:boundcolumn DataField="skickat"/>
</columns>
</asp:datagrid>
varför fungerar inte bläddringen? och finns det något alternativ till datagrid men så att man fortfarande kan ha bläddring? gillar inte datagrid.. =/
Vill bara tillägga att jag får fram det jag vill, men jag har ju satt size till 2 och jag har fixat så att det finns 3 "inlägg" men det visas bara två på sidan och pagingfunktionen är synlig men det går inte att klicka på nästa.. =/
renholmMedlem sedan apr. 20012 266 inlägg Har för mig att byt_sida funktionen körs innan Page_Load vilket skapar problem då page_load skriver över vad byt_sida har ändrat, nedanstående kod borde åtgärda problemet.
<script runat="server">
sub page_load(src as object, e as eventargs)
[b]If Not Page.IsPostback Then[/b]
dim cn as new oledbconnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\Databaser\tihi.mdb;")
dim cmd as new oledbcommand("select * from guestbook where auserid='" & request.QueryString("userid") & "' order by skickat desc",cn)
dim dr as oledbdatareader
cn.open()
dr=cmd.executereader()
inlagg.datasource=dr
inlagg.databind()
dr.close()
cn.close()
[b]End if[/b]
end sub
</script>
(hoppas jag fick till VB syntaxen)
gregganMedlem sedan jan. 2004678 inlägg nej det där hjälpte tyvärr inte. :(
det där borde ju bara hjälpa när man väl klickar på nästa. men jag lyckas inte ens få nästa till en länk så att jag kan klicka på den... =/
gefleboMedlem sedan feb. 200429 inlägg Hej.
Är ingen hejare på detta men har fått det att funka. Ska försöka att förklara hur jag gjorde.
I PageLoad anropar jag en proceduren som binder datan till min DataGrid. Viktigt att tänka på det som renholm skrev att den ska ligga inom "If Not IsPostback Then".
sub Page_Load()
If Not IsPostBack Then
' Binder datan
BindDatan()
End If
end sub
Sen har jag proceduren.
sub BindDatan()
' Här kommer all kod för att binda datan dvs den kod du nu har i PageLoad
end sub
Till sist så har du proceduren som utför själva sidbytet. Den som du har skrivit är nästan helt korrekt förutom att du måste byta ut andra raden mot proceduren som binder datan.
sub byt_sida()
inlagg.currentpageindex = e.newpageindex
BindDatan()
end sub
Hoppas att du får till det med hur jag har förklarat. Funkar för mig.
Lycka till.
gregganMedlem sedan jan. 2004678 inlägg nope.. tyvärr problemet kvarstår.. men jag får en känsla av att det är nåt annat som är fel. jag kan ju inte ens klicka på nästa.. det står bara föregående och nästa som text och så visas de 2 senaste inläggen men jag kan inte klicka på nästa eller föregående för att se några av de andra inläggen... felet måste ligga nån annanstans.. men vart?
har jag missat nåt nere i asp:datagrid-delen? :q
jag har arbetat fram den här koden med hjälp från ett exempel i en bok. i det exemplet använder dom inte allowcustompaging="true" utan bara allowpaging="true" men om jag väljer allowpaging="true" och utelämnar custompaging får jag detta felmeddelande:
AllowCustomPaging must be true and VirtualItemCount must be set for a DataGrid with ID inlagg when AllowPaging is set to true and the selected datasource does not implement ICollection.
kan det vara till någon hjälp?
gregganMedlem sedan jan. 2004678 inlägg gissa vad?
greggan löste problemet!! :e
med ett tack till 4guysfromrollas hemsida.. ;)
funderade vidare på det där med allowcustompaging... så jag tog bort det, fick felet som jag beskrev ovan.
sedan gjorde jag en googlesökning på felet och fick en träff på 4guysfromrolla. gick in och läste och då hade de beskrivit hur de gjorde en datagrid. och så hade de skrivit:
If you accidentally attempt to use a SqlDataReader with default paging, as opposed to a DataSet, you will get the following error message:
AllowCustomPaging must be true and VirtualItemCount must be set for a DataGrid with ID DataGridID when AllowPaging is set to true and the selected datasource does not implement ICollection.
då ändrade jag bara till oledbdataadapter och dataset istället för datareader. så nu fungerar det. tack för alla bra tips. dom har säkert också hjälpt för annars skulle det kanske inte fungera nu.
:) :OO :P
CaleMedlem sedan mars 200490 inlägg ahh tack greggan :)
detta löste problemet för mig med, har tragglat länge med detta..
gregganMedlem sedan jan. 2004678 inlägg härligt att lösningen kan vara till hjälp! :)
inspiroMedlem sedan sep. 2005673 inlägg Bättre att använda en datatable istället för dataset när du inte ebhöver datasetets funktionalitet.
gregganMedlem sedan jan. 2004678 inlägg är inte dataset och datatable väldigt olika saker? datatabel är väl en komponent man lägger ut på sidan och fyller med information t.ex från en dataset. och dataseten fyller man med info från databasen innan man lägge ut det i en datatabel eller datagrid?
inspiroMedlem sedan sep. 2005673 inlägg
greggan skrev:
är inte dataset och datatable väldigt olika saker? datatabel är väl en komponent man lägger ut på sidan och fyller med information t.ex från en dataset. och dataseten fyller man med info från databasen innan man lägge ut det i en datatabel eller datagrid?
Nope, datatable är ett dataset "light". Enkelt utryckt kan man väl säga att ett dataset kan spegla flera tabeller, en datatable kan spegla en tabell.