13. juli 2004 - 17:55Der er
8 kommentarer og 1 løsning
skift labeltekst efter klik på billede
Hej!
Jeg har en side med 9 billeder af forskellige personer. Nederst på siden har jeg en række labels, som skal udfyldes med oplysninger om personen, hvis billede, der klikkes på.
function dataShow(i) { if (!arrData[0]) dataInit();
if (!arrData[0] || i >= arrData.length) alert("Data kan ikke vises."); else { document.getElementById("lblName").innerText = arrData[i][0]; document.getElementById("lblAdress").innerHTML = arrData[i][1]; } } </script>
// VB del der fylder JS-Array'et med data fra en DataTable med samme størrelse som den der bruges til galleriet.
Private Sub Script_DataInit(ByVal dtData As DataTable) Dim oSB As New System.Text.StringBuilder Dim sName As String Dim sAge As String Dim sAdress As String
For i = 0 To dtData.Rows.Count - 1 sName = dtData.Rows(i).Item("Name").ToString sAdress = dtData.Rows(i).Item("Adress").ToString
oSB.Append("dataAdd('" & sName & "','" & sAdress & "');") Next
oSB.Append("}") oSB.Append("</script>")
RegisterClientScriptBlock("dataInit", oSB.ToString) End Sub
// Tilføjelse af onclick til hvert billede Private Sub dgTest_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgTest.ItemDataBound Select Case e.Item.ItemType Case ListItemType.Item, ListItemType.AlternatingItem CType(e.Item.FindControl("imgPerson"), System.Web.UI.WebControls.Image).Attributes.Add("onclick", "java script:dataShow(" & e.Item.ItemIndex & ");") End Select End Sub
Løsningen kalder en side, der udfra det medsendte Id loader de nødvendige persondata fra databasen, opdaterer den kaldende side og derefter lukker siden.
For at undgå en irriterende popup, loades siden i en skjult iFRAME.
Når de nødvendige data er loadet kan følgende kaldes:
Siden loades i en tilføjet IFRAME <iframe id="frameTmp" name="frameTmp" style="display:none;"></iframe>
Har indkapslet "imgPerson" i en HyperLink og ændret dgTest_OnItemDataBound til:
Private Sub dgTest_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgTest.ItemDataBound Select Case e.Item.ItemType Case ListItemType.Item, ListItemType.AlternatingItem CType(e.Item.FindControl("hlDataLoad"), HyperLink).NavigateUrl = "test.aspx?id=" & e.Item.Cells(0).Text CType(e.Item.FindControl("hlDataLoad"), HyperLink).Target = "frameTmp" End Select End Sub
Så er jeg tilbage igen. Tak for de gode og uddybende kommentarer. Jeg tror jeg prøver at arbejde videre med repsaks løsning, da den virker som den mest simple. Men smid et svar begge 2(repsak og thrytter), så kan i dele pointene. Endnu engang tak.
thrytter -> jeg kan godt se din idé, men jeg vil stadig mene at det som grundregel er bedst at holde data på serveren (konkrete tilfælde kan altid diskuteres :)
psn -> my answer is posted
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.