Först en DataGrid eller DataList som hämtar Kategorierna sedan i den datalisten för varje kategori har du en till datalist eller datagrid som frågorna hämtas till.
Mm, eller först hämtas alla kategorier och sedan när man väljer en kategori så hämtas frågorna som ska vara under kategorin. Så funkar mitt exempel men vet inte om det är det mest optimala, kanske ska försöka hämta allt på engång.
Jo, på så vis fungerar det ju perfekt, men när man vill visa kategorierna och dess frågor på en och samma sida så blir det så många databashämtningar som det finns kategorier.
Jag vill endast använda 1 sql-fråga som hämtar alla kategorier samt 1 sql-fråga som hämtar frågorna. Därutöver kan det vara länkar som leder till en sida som endast visar frågorna i en specifik kategori.
Går ju att lösa med en repeater oxå. Kanske inte det smidigaste, men det funkar.
OBS! använder rak HTML-kod för tabeller .... man bör använda asp:table osv ..... men för visnings syfte räcker detta ;)
<%@ Page Language="VB" Debug="True" %>
<script runat="server">
Private lastCategory As String = ""
Private Sub Page_Load(sender As Object, e As EventArgs)
Dim _list as New ArrayList()
Dim N As Integer
For N = 0 TO 10
Dim I As Integer
For I = 0 TO 5
Dim _myList As New MyList()
_myList.Id = N
_myList.Category = "Category " & N.ToString()
_myList.Name = "Name " & I.ToString() & " in category: " & _myList.Category
_list.Add(_myList)
Next
Next
rpList.DataSource = _list
rpList.DataBind()
End Sub
Public Function doHide(ByVal cat As String) As Boolean
Dim blnHide As Boolean = False
If (lastCategory <> cat) Then
blnHide = True
End If
lastCategory = cat
Return blnHide
End Function
Public Class MyList
Private m_strCategory as String = ""
Private m_strName As String = ""
Public Property Category() As String
Get
Return m_strCategory
End Get
Set(ByVal Value As String)
m_strCategory = Value
End Set
End Property
Public Property Name() As String
Get
Return m_strName
End Get
Set(ByVal Value As String)
m_strName = Value
End Set
End Property
End Class
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:Repeater id="rpList" runat="server">
<ItemTemplate>
<table border="0">
<tr>
<td colspan="2" runat="server" visible="<%# doHide(CType(Container.DataItem, MyList).Category)%>"><b><%# CType(Container.DataItem, MyList).Category %></b></td>
</tr>
<tr>
<td widht="20" runat="server"> </td><td runat="server"><%# CType(Container.DataItem, MyList).Name %></td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
På detta sätt räcker det med en databas-hämtning :e
cya,
PatrikB
137 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe