Hej Jag har letat och provat olika saker men kan inte få det att fungera att visa nästa rad från databas. Någon som har något tips, allt är av intresse. //Bo Jag har provat följande men det funkar inte Förklara gärna lite mer om hur du menar med "nästa rad från databas"! I ditt exempel ser det ut som att du hämtar ut en antal rader från din databas och populerar en ListView. Hej Robin jag har gjort ett bildgalleri med ett x antal bilder inom en viss kategori. När man klickar på en image button kommer man till en förstoring av den valda bilden. Det är inte säkert att det är nästa rad i databasen, men ska vara nästa bild inom kategorin. Jag har försökt att hämta alla bilderna inom kategorin. Sedan får jag inte rätt på att hoppa fram eller bak för att byta bild inom kategorin. //Bo Visa gärna lite kod på hur du hämtar alla bilderna inom en kategori så kanske vi kan lösa hur du får till funktionen att hoppa fram och tillbaka mellan bilderna. N Jag har försökt att skriva om coden utan resultat, även försökt att hitta bättre code att använda. //Bo Testa mig fram med liknande exempel och jag hade också problem med SelectedIndex. Jag insåg ganska snabbt att problemet beror på att när jag sätter SelectedIndex så har listan av (i ditt fall) bilder redan renderats. Tack för du la ner tid att leta. Jag provade scriptet men jag fick inte det att generera något. Fick inga felmeddelande. Jag provade även att byta ut ClickThroughs mot tblBildgalleri_ID Test något i stil med detta istället: Jag vet inte vad jag gör för fel men sidan jag får upp är fortfarande blank. //Bo Vet inte om det har något med problemet att göra men i dina kodexempel så skiljer sig SQL-namnet på den kolumn som verkar vara din ID-kolumn. Tack för att du upptäckte det, trots att jag ändrade visas inget resultat. Jag får väl klura ut något. Fick tips om AJAX av en kompis, men jag kan inget om det. //Bo Hej Bo, Jag har tyvärr inte haft tid att göra mer åt detta problem kommer att ta upp det igen i början på nästa år, studierna tar all tid. Du behöver inte lägga tid på det nu. Tack! //BoVisa nästa rad i databas
Sv: Visa nästa rad i databas
Protected Sub btnLagg2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLagg2.Click
listView1.SelectedIndex = listView1.SelectedIndex + 1
End Sub
Sv: Visa nästa rad i databas
I vilken situation vill du hämta "nästa rad"? Är det när användaren har klickat på ett Item i din lista och din applikation har "svarat" på det klicket?
Vi började titta på en lösning för ett liknande problem där vi ville hämta "nästa rad" från databasen, problemet vi hade var att vi inte bara kunde ta det aktuella databas id't och addera 1 och hämta posten via det id't eftersom de rader vi visade inte kom i den ordningen från databasen. Utan det vi tillsvidare gjorde var att hämta hela listan igen (eftersom det bara rörde sig om ca 20 rader) och sedan på server-sidan "leta reda på" den post med det aktuella id't och då kunde vi plocka fram nästa rad.
Hoppas detta iaf kan leda dig vidare!Sv:Visa nästa rad i databas
Sv: Visa nästa rad i databas
Nyckeln ligger egentligen i att du sorterar alla bilderna inom en kategori på samma sätt hela tiden.Sv:Visa nästa rad i databas
Denna ImageButton finns på sida1 där olika kategorier av bilder förekommer, ett klick på bilden vidare till bildgalleriitem.aspx.
bildgalleri.aspx
<asp:ImageButton id="PictureURImage" runat="server"
ImageUrl='<%# Eval("PictureURL", "~/Images/BildGalleriImage/Bilder/1/{0}") %>'
AlternateText='<%# Eval("Category") %>' width="115" Height="79"
style="float:left; border: none; margin-right: 5px; margin-left: 5px;"
PostBackUrl='<%# string.format("BildgalleriItem.aspx?tblBildgalleri_ID={1}&Category={0}",
Eval("Category"), Eval("tblBildGalleri_ID")) %>'></asp:ImageButton>
bildgalleriitem.aspx
'Denna bild ändras när jag klickar på ImageButton id="PictureURImage" enligt nedan.
'Jag vill ändra denna bild och göra den klickbar så att nästa bild inom kategorin visas
<asp:sqldatasource id="SqlDataSource1" runat="server"
selectcommand="SELECT * FROM [TblBildgalleri] WHERE ([tblBildgalleri_ID] = @tblBildgalleri_ID)"
connectionstring="<%$ ConnectionStrings:RoggeUnited %>">
<SelectParameters>
<asp:QueryStringParameter Name="tblBildgalleri_ID" QueryStringField="tblBildgalleri_ID" Type="Int32"></asp:QueryStringParameter>
</SelectParameters>
</asp:sqldatasource>
<asp:formview id="FormView1" runat="server" datakeynames="tblBildgalleri_ID" datasourceid="SqlDataSource1">
<ItemTemplate>
<asp:Label Visible="false" Text='<%# Eval("PictureURL") %>' runat="server" ID="PictureURLLabel" />
<asp:Image ImageUrl='<%# Eval("PictureURL", "~/Images/BildgalleriImage/Bilder/2/{0}") %>' runat="server" id="PictureURL" Height="440" Width="550" />
<br />
</ItemTemplate>
<FooterTemplate>
[Föregående] [Välj ny bildkategori]
</FooterTemplate>
</asp:formview>
'Denna kod hämtar alla bilderna inom kategorin, jag skullle vilja göra så att vald bild enligt sida1 (bildgalleri.aspx)
' blir i fokus då kan jag använda denna till att enbart visa vald bild för att sedan klicka mig framåt respektive bakåt.
<asp:sqldatasource id="SqlDataSource7" runat="server"
selectcommand="SELECT * FROM [TblBildgalleri] WHERE ([Category] = @Category)"
connectionstring="<%$ ConnectionStrings:RoggeUnited %>">
<SelectParameters>
<asp:QueryStringParameter Name="Category" QueryStringField="Category" Type="Int32"></asp:QueryStringParameter>
</SelectParameters>
</asp:sqldatasource>
<asp:datalist id="DataList1" runat="server" datakeyfield="tblBildGalleri_ID" datasourceid="SqlDataSource7"
RepeatColumns="1" CellPadding="6" EnableViewState="false">
<ItemTemplate>
<table border="0"><tr><td>
<asp:ImageButton id="PictureURImage" runat="server" ImageUrl='<%# Eval("PictureURL", "~/Images/BildGalleriImage/Bilder/1/{0}") %>'
AlternateText='<%# Eval("Category") %>'
width="115" Height="79" style="float:left; margin-right: 5px; margin-left: 5px;"
PostBackUrl='<%# string.format("BildgalleriItem.aspx?tblBildgalleri_ID={1}&Category={0}",
Eval("Category"), Eval("tblBildGalleri_ID")) %>' BorderColor="Blue" BorderStyle="Ridge" BorderWidth="1"></asp:ImageButton>
</td></tr></table>
</ItemTemplate>
</asp:datalist>
Sv: Visa nästa rad i databas
Så jag googlade lite på detta och som jag misstänkt måste man sätta SelectedIndex innan DataBind körs på din DataList.
Det jag skulle föreslå är att du instället för att göra allt med databindning i aspx-filen gör detta programatiskt i code-behind. Dvs du hämtar din lista med bilder, via QueryString-parametern så kan du loopa igenom listan och leta reda på den aktuella bilden. Då har du också möjlighet att samtidigt plocka fram föregående och nästa bild i listan.
Jag hittade denna länk som beskriver en liknande situation i VB.NET: http://datawebcontrols.com/demos/SelectMostRead.aspx
Eftersom jag själv bara utvecklare i C# så var det lättare att googla fram ett exempel istället för att göra ett eget, hoppas du har överseende med det :)
Hojta till igen om du stöter på problem med detta exempel eller har fler funderingar!Sv:Visa nästa rad i databas
<asp:DataList id="dlArticles" runat="server" AutoGenerateColumns="False" Font-Size="10pt" Font-Names="Verdana">
<HeaderStyle font-size="13pt" font-bold="True" horizontalalign="Center" forecolor="White" backcolor="#006699"></HeaderStyle>
<AlternatingItemStyle backcolor="#EEEEEE"></AlternatingItemStyle>
<ItemTemplate>
<b>Kategori:</b> <%# DataBinder.Eval(Container.DataItem, "Category")%><br>
<b>Views:</b> <%# DataBinder.Eval(Container.DataItem, "ClickThroughs") %>
</ItemTemplate>
<SelectedItemTemplate>
<font size="+1">
<b>Article:</b> <%# DataBinder.Eval(Container.DataItem, "PictureURL") %><br>
<span style="background-color:yellow;"><b>Views:</b> <%# DataBinder.Eval(Container.DataItem, "ClickThroughs") %></span>
</font>
</SelectedItemTemplate>
</asp:DataList>
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
If Not Page.IsPostBack Then
dlArticles.DataSource = GetArticles()
dlArticles.DataBind()
End If
End Sub
Function GetArticles() As DataTable
Dim connectionString As String = "RoggeUnited"
Dim sqlConnection As SqlConnection = New SqlConnection(connectionString)
Dim queryString As String = "SELECT TOP 10 tblBildGaller_ID, [tblBildgalleri].[Category], [tblBildgalleri].[PictureURL], [tblBildgalleri].[DateToShow], [tblBildgalleri" & _
"].[Beskrivning], [tblBildgalleri].[ClickThroughs] FROM [tblBildgalleri] ORDER BY NEWID()"
Dim sqlCommand As SqlCommand = New SqlCommand(queryString, sqlConnection)
Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)
Dim dt As New DataTable()
sqlAdapter.Fill(dt)
'Find the row with the most views
Dim highViewCount = 0, highViewIndex = -1, i As Integer
For i = 0 To dt.Rows.Count - 1
If dt.Rows(i)("ClickThroughs") > highViewCount Then
highViewCount = dt.Rows(i)("ClickThroughs")
highViewIndex = i
End If
Next i
'Set the selectedindex
dlArticles.SelectedIndex = highViewIndex
Return dt
End Function
Sv: Visa nästa rad i databas
Dim highViewCount = 0, highViewIndex = -1, i As Integer
For i = 0 To dt.Rows.Count - 1
'OM QueryString-variabeln med ditt Bild-Id är samma som den aktuella raden
If dt.Rows(i)("tblBildGaller_ID") = Request.QueryString("tblBildgalleri_ID") Then
highViewIndex = i 'Spara index
End If
Next i
dlArticles.SelectedIndex = highViewIndex
Return dt
Sv:Visa nästa rad i databas
Sv: Visa nästa rad i databas
I det ena exemplet så heter den tblBildGalleri_ID och i det andra står det tblBildGaller_ID. Tänkte bara om det kunde vara orsaken till att du inte får några träffar eller om det rent av fallit bort ett "i" när du kopierade in koden här?Sv:Visa nästa rad i databas
Sv: Visa nästa rad i databas
Hur går det med detta problem?
Om du inte har löst det tänkte jag sätta mig under veckan och så om jag kan göra en exempel applikation som liknar din och se om jag kan lösa problemet. Dock så skulle ett sådant exempel vara gjort i C# eftersom att mina VB färdigheter lämnar mer att önska. Sv:Visa nästa rad i databas