Ik ben momenteel bezig met mijn nieuwe site.
Hiervoor wil ik Ajax gebruiken, om de gebruikerservaring te verbeteren.
Momenteel loop ik echter tegen het probleem aan dat mijn pagina steeds een volledige refresh blijft doen. Terwijl ik een partial update wil.
In een directory op de server ga ik na welke directory's hier binnen zitten. Deze directory's stellen elk een album voor met foto's daarbinnen.
In List_Albums() wordt deze lijst aangemaakt. En als menuitems in de lijst albumlist geplaatst. Ze krijgen allemaal een onclick event mee die het stukje javascript op pagina oproept.
Zodra de gebruiker op het menuitem klikt. Wordt Get_Album_Thumbs(name) opgeroepen. Waar name de naam is van de directory is op de server (en dus ook het album met foto's).
Dit stukje javascript moet een partial update verzorgen. En roept UpdatePanel1_Load(object sender, EventArgs e) op de server aan.Welke op zijn beurt weer View_Album(string albumname) aanroept. Waarbij het argument albumname dus bekend moet zijn.
Dit werkt allemaal. Echter krijg ik steeds een fullpage refresh lijkt het. Terwijl ik een partialupdate wil.
Default.aspx:
Default.aspx.cs
De site is hier te zien: http://kleurtjes.net/betasite/
Hiervoor wil ik Ajax gebruiken, om de gebruikerservaring te verbeteren.
Momenteel loop ik echter tegen het probleem aan dat mijn pagina steeds een volledige refresh blijft doen. Terwijl ik een partial update wil.
In een directory op de server ga ik na welke directory's hier binnen zitten. Deze directory's stellen elk een album voor met foto's daarbinnen.
In List_Albums() wordt deze lijst aangemaakt. En als menuitems in de lijst albumlist geplaatst. Ze krijgen allemaal een onclick event mee die het stukje javascript op pagina oproept.
Zodra de gebruiker op het menuitem klikt. Wordt Get_Album_Thumbs(name) opgeroepen. Waar name de naam is van de directory is op de server (en dus ook het album met foto's).
Dit stukje javascript moet een partial update verzorgen. En roept UpdatePanel1_Load(object sender, EventArgs e) op de server aan.Welke op zijn beurt weer View_Album(string albumname) aanroept. Waarbij het argument albumname dus bekend moet zijn.
Dit werkt allemaal. Echter krijg ik steeds een fullpage refresh lijkt het. Terwijl ik een partialupdate wil.
Default.aspx:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
| <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" Namespace="System.Web.UI" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Kleurtjes.Net</title> <link href="StyleSheet.css" rel="stylesheet" type="text/css" media="screen"/> <link href="lightbox.css" rel="stylesheet" type="text/css" media="screen"/> <script type="text/javascript" src="js/prototype.js"></script> <script type="text/javascript" src="js/scriptaculous.js?load=effects"></script> <script type="text/javascript" src="js/lightbox.js"></script> <script type="text/javascript" src="js/effects.js"></script> <script type="text/javascript" language="javascript"> <!-- function Get_Album_Thumbs(name) { x = document.getElementById("TextBox1"); x.value = name; //De naam van het album wordt in de textbox geplaatst, zodat we deze kunnen gebruiken aan de serverside var prm = Sys.WebForms.PageRequestManager.getInstance(); prm._doPostBack('UpdatePanel1',''); } //--> </script> </head> <body onload="initLightbox()"> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <!-- Normale Menu --> <div id="menu" runat="server"> <ul id="menulist" runat="server"> <li><a href="Default.aspx">Portfolio</a></li> <li><a href="Contact.aspx">Contact</a></li> </ul> </div> <!-- Album Menu --> <div id="albums" runat="server"> <ul id="albumlist" runat="server"> <!-- Inhoud hiervan wordt serverside gegenereerd --> </ul> </div> <!-- Thumbnail weergave --> <asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load"> <ContentTemplate> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <div id="content" runat="server"> </div> </ContentTemplate> </asp:UpdatePanel> </form> </body> </html> |
Default.aspx.cs
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.IO; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List_Albums(); } protected void UpdatePanel1_Load(object sender, EventArgs e) { View_Album(TextBox1.Text); //TextBox1.Text bevat de naam van het album wat geladen moet worden } protected void List_Albums() { //Alle folders binnen de map Photos zijn albums DirectoryInfo myDir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\\Photos"); DirectoryInfo[] myAlbums = myDir.GetDirectories(); foreach (DirectoryInfo album in myAlbums) { albumlist.InnerHtml += "<li><a href='' onclick='Get_Album_Thumbs(\"" + album.ToString() + "\") '>" + album.ToString() + "</a></li>"; } } protected void View_Album(string albumname) { content.InnerHtml += "<p>" + albumname + "</p>"; //content zit binnen de updatepanel. //Code om de thumbnails te laden komt hier. Deze is afhankelijk van albumname } } |
De site is hier te zien: http://kleurtjes.net/betasite/
Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?