Ik ben bezig om een stukje Ajax-functionaliteit in mijn ASP.Net pagina te integreren.
Om de 20 seconden moet een gedeelte van een pagina worden ververst, zonder dat de hele pagina opnieuw wordt ingeladen.
Ik heb bijna alles voor elkaar gekregen wat ik wil, echter de hele pagina wordt wel ververst. Ik snap niet precies hoe dit kan, terwijl ik wel voor zover ik weet de voorbeelden die ik heb kunnen vinden op Internet goed heb gevolgd. Ik maak voor het verversen van de pagina gebruik van een timer-control.
Mijn voorbeeld code.
Laat je niet door de wijs brengen door de PHP-tekst die ik erin heb staan. Ik weet namelijk niet wat de code is op GOT om ASP-content te tonen.
De achterliggen C#-code. Ik laat slechts de functionaliteit van de Page_load zien en de Timer1_Tick.
Ik heb trouwens ook al geprobeerd om een lege pagina te maken, met slechts de code zoals die in het voorbeeld (http://www.asp.net) wordt aangegeven, maar daar wordt ook de gehele pagina ververst.
Bestaat er overigens ook een mogelijkheid dat slechts een gedeelte van de pagina wordt ververst, als er een wijziging in de database heeft plaatsgevonden?
Om de 20 seconden moet een gedeelte van een pagina worden ververst, zonder dat de hele pagina opnieuw wordt ingeladen.
Ik heb bijna alles voor elkaar gekregen wat ik wil, echter de hele pagina wordt wel ververst. Ik snap niet precies hoe dit kan, terwijl ik wel voor zover ik weet de voorbeelden die ik heb kunnen vinden op Internet goed heb gevolgd. Ik maak voor het verversen van de pagina gebruik van een timer-control.
Mijn voorbeeld code.
PHP:
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
| <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="20000"> </asp:Timer> <asp:datagrid id="DataGrid2" runat="server" HorizontalAlign="Center" AutoGenerateColumns="False" PageSize="50" BorderStyle="None" BorderColor="#E7E7FF" BorderWidth="1px" BackColor="White" CellPadding="3" GridLines="Horizontal" Height="56px" Width="100%" AllowSorting="True" onselectedindexchanged="DataGrid2_SelectedIndexChanged"> <FooterStyle ForeColor="#4A3C8C" BackColor="#B5C7DE"></FooterStyle> <SelectedItemStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#738A9C"></SelectedItemStyle> <AlternatingItemStyle BackColor="#F7F7F7"></AlternatingItemStyle> <ItemStyle ForeColor="#4A3C8C" BackColor="#E7E7FF"></ItemStyle> <HeaderStyle Font-Bold="True" ForeColor="#F7F7F7" BackColor="#4A3C8C"></HeaderStyle> <Columns> <asp:TemplateColumn SortExpression="Status" HeaderText="Status"> <HeaderStyle Width="5px"></HeaderStyle> <ItemTemplate> <table style="width: 100%; height: 100%;" bgcolor='<%# DataBinder.Eval(Container.DataItem, "StatusColor") %>'> <tr> <td><span title='<%# DataBinder.Eval(Container.DataItem, "Status") %>'> <asp:LinkButton runat="server" Text="Select" CommandName="Select" CausesValidation="false" ID="Linkbutton1" CssClass="datagrid_select_button"></asp:LinkButton></span></td> </tr> </table> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="Id" SortExpression="ID" ReadOnly="True" HeaderText="Opdracht nummer"> <HeaderStyle Width="5px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="Dagdeel" SortExpression="Sla" ReadOnly="True" HeaderText="Dagdeel"> <HeaderStyle Width="5px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="Postcode" SortExpression="Postcode" ReadOnly="True" HeaderText="Postcode"> <HeaderStyle Width="5px"></HeaderStyle> </asp:BoundColumn> <asp:BoundColumn DataField="Plaats" SortExpression="Plaats" ReadOnly="True" HeaderText="Plaats"></asp:BoundColumn> <asp:BoundColumn DataField="Straat" SortExpression="Straat" ReadOnly="True" HeaderText="Straat"></asp:BoundColumn> <asp:BoundColumn DataField="Opdrachtgever" SortExpression="Opdrachtgever" ReadOnly="True" HeaderText="Opdrachtgever"></asp:BoundColumn> <asp:BoundColumn DataField="Engineer" SortExpression="Engineer" ReadOnly="True" HeaderText="Engineer"></asp:BoundColumn> </Columns> <PagerStyle HorizontalAlign="Right" ForeColor="#4A3C8C" BackColor="#E7E7FF" Mode="NumericPages"></PagerStyle> </asp:datagrid> <asp:Label ID="LabelUpdate" runat="server" Text="Label"></asp:Label> </ContentTemplate> </asp:UpdatePanel> |
Laat je niet door de wijs brengen door de PHP-tekst die ik erin heb staan. Ik weet namelijk niet wat de code is op GOT om ASP-content te tonen.
De achterliggen C#-code. Ik laat slechts de functionaliteit van de Page_load zien en de Timer1_Tick.
PHP:
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
64
65
66
67
68
69
70
71
72
73
74
| using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using GISCare.MWA.BLL; using GISCare.Common.Authentication; namespace scep { /// <summary> /// Summary description for WebForm1. /// </summary> public partial class _default : System.Web.UI.Page { protected System.Web.UI.WebControls.DataGrid DataGrid1; protected System.Data.DataView dataView; protected System.Web.UI.WebControls.Repeater Repeater1; private Engineer _engineer = null; private Case _currentCase = null; protected void Page_Load(object sender, System.EventArgs e) { //redirect if not logged in User user = (User) Session["User"]; if (user == null || !user.Passport.Valid() || Session["engineer"] == null) { this.Page.Response.Redirect(GISCare.Common.Authentication.Common.PortalUrl); } CandMConnection connection = new CandMConnection(); _engineer = (Engineer)Session["engineer"]; _engineer.CurrentConnection = connection.DbConnection; if (!ScriptManager1.IsInAsyncPostBack) { if (!IsPostBack) { if (Session["sortby"] == null) Session.Add("sortby", ""); if (Session["casedatetime"] == null) Session.Add("casedatetime", DateTime.Now); CaseDateTime = DateTime.Now; refreshData(); } else { try { CaseDateTime = DateTime.Parse(TextBoxDate.Text); } catch { } setCurrentCase(); } } } protected void Timer1_Tick(object sender, EventArgs e) { refreshData(); LabelUpdate.Text = DateTime.Now.ToLongTimeString(); } } } |
Ik heb trouwens ook al geprobeerd om een lege pagina te maken, met slechts de code zoals die in het voorbeeld (http://www.asp.net) wordt aangegeven, maar daar wordt ook de gehele pagina ververst.
Bestaat er overigens ook een mogelijkheid dat slechts een gedeelte van de pagina wordt ververst, als er een wijziging in de database heeft plaatsgevonden?