[C#] Datalist elke 5 seconden opnieuw laden.

Pagina: 1
Acties:

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Hallo,

Ik ben aan het proberen een chatbox te maken.

Nu zit ik er een beetje mee dat de chatbox elke keer opnieuw word moet worden geladen.

Ik had er het volgende voor in mijn hoofd, ik weet dat het niet optimaal is:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    protected void DoRefresh()
    {
        RefreshDate = DateTime.Now;

        RefreshDate.AddSeconds(5);

        Response.Flush();

        if (appHash != (int)Application["ChatHash"])
        {
            // Het vullen van de datalist
            FillList();

            appHash = (int)Application["ChatHash"];
        }

        DoRefresh();
    }


in de apphash word een unieke hash gepost als er een nieuw bericht word toegevoegd. dus als er geen nieuwe berichten worden toegevoegd dan word de database ook niet aangesproken.

Deze event word gefired op de PreRender event.

Dit wil niet. want ik wil graag dat de pagina naderhand opnieuw word gevuld, nu kan ik wel zo'n refreshknopmaken maar dat vind ik persoonlijk verweg van ideaal.

Hoe zouden jullie het maken ongeveer in zo'n situatie ? :?


Die google advertenties met 'ASP.Net cusussen' enzo dat maakt deze vraag af 8)7

[ Voor 7% gewijzigd door Gurbe de n00b op 01-07-2006 19:04 ]

Portfolio


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 03-02 20:14
observer pattern al bekeken ?

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

Erhm... :?

Haal je nu niet clientside en serverside en webforms / winforms gruwelijk door elkaar?
Kijk eens naar Ajax (AjaxPro, Atlas, whatever) voor de mogelijkheden, alhoewel je beter andere applicaties kan schrijven, gezien het http protocol.
Voor webforms is dit niet de meest handige methodiek :)

[ Voor 29% gewijzigd door gorgi_19 op 01-07-2006 20:18 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Ik had ook al een beetje naar Ajax/Atlas gekeken, maar ik moet zeggen dat dat er toch wel ingewikkeld uitziet. B)

Portfolio


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

Gurbe de n00b schreef op zaterdag 01 juli 2006 @ 20:20:
Ik had ook al een beetje naar Ajax/Atlas gekeken, maar ik moet zeggen dat dat er toch wel ingewikkeld uitziet. B)
dan moet je wellicht overwegen om andere mogelijkheid te gebruiken buiten ASP.Net of van de applicatie af zien :)

Of je moet een Clientside refresh gebruiken om de 5 seconden, maar je users zullen dit niet echt kunnen waarderen :)

[ Voor 20% gewijzigd door gorgi_19 op 01-07-2006 20:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Zijn er geen andere oplossingen ?

Ik zou graag een simpel chatclientje waar hooguit enkele personen op zitten te chatten.

Of dat je via javascript om de 5 seconden een server side routine aanroept waar die code instaat ?

[ Voor 30% gewijzigd door Gurbe de n00b op 01-07-2006 20:24 ]

Portfolio


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

Gurbe de n00b schreef op zaterdag 01 juli 2006 @ 20:23:
Zijn er geen andere oplossingen ?

Ik zou graag een simpel chatclientje waar hooguit enkele personen op zitten te chatten.
Zoek een standaard componentje oid op hotscripts of een voorbeeldapplicatie icm AjaxPro / Atlas :)

http://weblogs.asp.net/ms...ve/2005/10/14/427501.aspx bijvoorbeeld; http://www.google.nl/sear...ro+Chat+Application&meta= algemener of http://www.google.nl/sear...as+Chat+Application&meta=
Gurbe de n00b schreef op zaterdag 01 juli 2006 @ 20:23:
Of dat je via javascript om de 5 seconden een server side routine aanroept waar die code instaat ?
Dat zal een methodiek zijn icm Ajax :P

[ Voor 45% gewijzigd door gorgi_19 op 01-07-2006 20:26 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Misschien dan toch maar echt even serieus daarin verdiepen.

Portfolio


  • Cuball
  • Registratie: Mei 2002
  • Laatst online: 03-02 20:14
gorgi_19 schreef op zaterdag 01 juli 2006 @ 20:17:

[...]

Voor webforms is dit niet de meest handige methodiek :)
had geen idee dat het over een webtoepassing ging... dan zal je inderdaad van de client uit gaan moeten pollen naar server of er nieuwe data klaar staat...

"Live as if you were to die tomorrow. Learn as if you were to live forever"


  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Ik heb nu even wat bezig geweest en ik kom nu tot het volgende:

ASP.NET:
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
    <atlas:ScriptManager ID="AtlasScriptManager1" runat="server" EnablePartialRendering="true">
    </atlas:ScriptManager>

<atlas:TimerControl runat="server" Interval="1500" ID="tickerTimer" OnTick="DoRefresh" />

       <asp:Label ID="Label1" runat="server"></asp:Label>
           <div align="center">
                <atlas:UpdatePanel ID="myPanel" runat="server" Mode="Always">
                       <ContentTemplate>
                                <asp:DataList Width="600px" ID="chat" runat="server">
                                    <ItemTemplate>
                                        <%# DataBinder.Eval(Container.DataItem, "bericht") %>
                                    </ItemTemplate>
                                </asp:DataList>
                       </ContentTemplate>
                                
                       <Triggers>
                                 <atlas:ControlEventTrigger ControlID="tickerTimer" EventName="Tick" />
                                 <atlas:ControlEventTrigger ControlID="Button1" EventName="Click" />
                       </Triggers>
                </atlas:UpdatePanel>
            <br />
        <asp:TextBox ID="bericht" runat="server" Width="400px"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="Verzenden!" Width="100px" OnClick="InsertPost" /><asp:Button ID="refresh" OnClick="changeRefresh" runat="server" Width="100px" Text="Button" />
    </div>
    <atlas:UpdateProgress runat="server" id="updateProgress1">
           <ProgressTemplate>
               <div align="center">
                    [img]"../../../../App_Themes/default/images/load.gif"[/img]
                    <br />
                    De pagina word geladen.
               </div>
           </ProgressTemplate>
    </atlas:UpdateProgress>


Het probleem is dat de datagrid niet word hetvuld met de nieuwe data zeg maar.

Het C# scriptje voor de insert.

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
41
42
    protected void FillList()
    {
        cmd.CommandText = "SELECT TOP(10) bericht, gebruiker FROM site_chat order by geplaatst DESC";

        adapt0r.SelectCommand = cmd;

        try
        {
            adapt0r.SelectCommand.Connection.Open();

            adapt0r.Fill(DataTafel);

            adapt0r.SelectCommand.Connection.Close();
        }
        catch (System.Exception e)
        {
            Response.Write(e.Message);
        }
        
        chat.DataSource = DataTafel;
        chat.DataBind();
    }

    public void InsertPost(object sender, EventArgs e)
    {
        Random rnd = new Random();

        cmd.Parameters.Add(new SqlParameter("@bericht", bericht.Text));
        cmd.Parameters.Add(new SqlParameter("@geplaatst", DateTime.Now));
        cmd.Parameters.Add(new SqlParameter("@gebruiker", Context.User.Identity.Name));

        cmd.CommandText = "INSERT INTO site_chat(bericht, geplaatst, gebruiker) VALUES(@bericht, @geplaatst, @gebruiker)";

        connect.Open();
        cmd.ExecuteNonQuery();
        connect.Close();

        Application["ChatHash"] = rnd.Next(1, 99999999);

        // De datagrid word weer gevuld
        FillList();
    }


Ik kom er echt niet uit, ik heb al meerdere tutorial doorzocht, maar volgens mij zie ik iets over het hoofd...

Alvast bedankt.

[ Voor 13% gewijzigd door Gurbe de n00b op 02-07-2006 14:39 ]

Portfolio


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

En als je breakpoints in je code zet om eea te volgen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Ik kan helaas niet vanuit VS2005 debuggen ivm de instellingen van de database.

[ Voor 9% gewijzigd door Gurbe de n00b op 02-07-2006 14:47 ]

Portfolio


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

Gurbe de n00b schreef op zondag 02 juli 2006 @ 14:47:
Ik kan helaas niet vanuit VS2005 debuggen ivm de instellingen van de database.
:? Wat heeft dat met elkaar te maken?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Nou, als ik wil debuggen vanuit VS2005 dan krijg ik een database error.

Portfolio


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 16:49

gorgi_19

Kruimeltjes zijn weer op :9

Gurbe de n00b schreef op zondag 02 juli 2006 @ 18:29:
Nou, als ik wil debuggen vanuit VS2005 dan krijg ik een database error.
En dat is niet op te lossen? want zonder enige debugmogelijk zal je vrij snel vast komen te zitten.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10-2025
Je kunt toch zelf ook tracerts aanbrengen of niet? De debug functionaliteit van VS2005 is echt niet de enigste manier om te debuggen...
Pagina: 1