Toon posts:

[ASP.Net/Ajax]

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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.

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?

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 13:34

Haan

dotnetter

Ik zou toch eerst even beginnen met het aan de praat krijgen van een basic aspx pagina met een updatepanel en vanuit daar verder werken. Meer dan een scriptmanager en updatepanel op een form pleuren zou daarvoor eigenlijk niet nodig moeten zijn.
Je hebt deze tutorial op www.asp.net geprobeerd?

offtopic:
kijk voor de juiste code tags trouwens hier: Overzicht van UBB-codes #tag_code

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zelfs al maak ik een nieuwe webform zonder timercontrol en ik voeg een button en label toe aan het updatepanel, dan zie ik gewoon als ik op de knop klik, dat de pagina wordt ververst. Het is een .NET 3.5 applicatie en ik heb geen verwijzingen naar enigerlei ajax-dingen in mijn web.config staan, misschien dat het daar mee te maken heeft?

Acties:
  • 0 Henk 'm!

  • The_Ghost16
  • Registratie: Januari 2004
  • Laatst online: 19-05 10:05
CausesValidation moet op false van de button control. En op het click event kun je dan een aanroep doen van de Update() functie van je updatepanel.

Als het goed is wordt dan alleen het geen in het update panel vernieuwd.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
The_Ghost16 schreef op donderdag 12 maart 2009 @ 11:48:
CausesValidation moet op false van de button control. En op het click event kun je dan een aanroep doen van de Update() functie van je updatepanel.

Als het goed is wordt dan alleen het geen in het update panel vernieuwd.
Nee, dat is het niet. De pagina wordt nog steeds volledig ververst.

ASP-code.
[code=html]
<form id="form1" runat="server">
<div>
<div>Dit is een test, ik hoop dat het werkt.
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button runat="server" Text="Button" onclick="Unnamed1_Click" CausesValidation="false" />
<asp:Label runat="server" Text="Label" ID="LabelUpdate"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
[/code=html]

C#
[code=c#]
namespace scep
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Unnamed1_Click(object sender, EventArgs e)
{
LabelUpdate.Text = "testing123";
}
}
}
[/code=c#]

[ Voor 1% gewijzigd door Verwijderd op 12-03-2009 12:04 . Reden: Code ombouwen tot c# en asp.net ipv php ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
offtopic:
je kunt C# code plaatsen met [code=c#] .... [/code], voor asp.net is geen aparte taal beschikbaar in de code tag, die kun je eventueel als [code=html] ... [/code] plaatsten.

Ik zou me dan vooral even focussen op je laatste voorbeeldje. Als de basis nog niet goed werkt, is het niet handig om meteen een complexere situatie aan de praat proberen te krijgen. Verder heb ik geen ervaring met Ajax i.c.m. asp.net, dus ik kan je niet echt helpen.

[ Voor 4% gewijzigd door Woy op 12-03-2009 12:01 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb inmiddels de fout opgelost. Ik heb een nieuw project aangemaakt met een updatepanel, vervolgens heb ik de inhoud van de web.config daarvan gekopieerd naar mijn huidige web.config. Nu werkt het wel.
Het heeft dus te maken met één van de verwijzingen in web.config.

[ Voor 14% gewijzigd door Verwijderd op 12-03-2009 13:12 ]

Pagina: 1