Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Multiuser portaal updates

Pagina: 1
Acties:

  • zezke
  • Registratie: September 2006
  • Laatst online: 07:10
Hallo iedereen,

De situatie is de volgende: momenteel werk ik aan een soort van portaal in de vorm van een webapplicatie. Het portaal is opgebouwd met .NET op de server dat gebruik maakt van het Kallite Dynamic Dashboards framework. Dit framework laat toe om een dashboard op te bouwen en te vullen met widgets. Elk van deze widgets wordt gevuld met grids door gebruik te maken van ExtJS.

Nu is het de bedoeling dat meerdere gebruikers tegelijk op deze webapplicatie kunnen bezig zijn. Dit betekent dat als een individu een item toevoegt in een van de widget dit widget ook moet geupdate worden bij de andere gebruikers. Ik heb reeds 2 pogingen ondernomen om dit te verwezelijken, maar beide zijn gefaald:

Poging 1

Ik heb per widget een specifiek singleton voorzien. Bij het initialiseren van een widget registreert een widget zich bij dit singleton. Als er dan iets toegevoegd wordt aan de grid in de widget, worden alle geregistreerde widgets op de hoogte gebracht met behulp van de volgende methode:

code:
1
2
3
4
5
6
public void testInform(string message)
{
    foreach(BatchPortlet portlet in portlets){
        System.Web.UI.ScriptManager.RegisterClientScriptBlock(portlet.getUpdatePanel(), typeof(BatchPortlet), "tempkey", "alert('there is an update!');", true);
    }
}


Dit werkt helaas niet (kan iemand uitleggen waarom?). Maar goed op naar poging 2:

Poging 2

De mark-up voor de widget in kwestie ziet er al volgt uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="BatchPortlet.ascx.cs" Inherits="Dashboard.Widgets.BatchPortlet" %>
<script src="JS/General.js" type="text/javascript"></script>
<script src="JS/Print.js" type="text/javascript"></script>
<script src="JS/BatchPortlet.js" type="text/javascript"></script>
<script src="JS/Filter.js" type="text/javascript"></script>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <input type="hidden" id="hdBatchPortletHeight"/>
        <input type="hidden" id="hdBatchPortletWidth"/>
        <input type="hidden" id="hdFilterContent"/>
        <input type="hidden" id="hdOrderContent"/>
        <div id="BatchPortletGrid"></div>
    </ContentTemplate>
</asp:UpdatePanel>


Daarom dacht ik: ik probeer even hetzelfde maar met de Update methode van het UpdatePanel1. Zogezegd, zo gedaan en we bekomen de volgende methode:

code:
1
2
3
4
5
6
public void testInform(string message)
{
    foreach(BatchPortlet portlet in portlets){
        portlet.getUpdatePanel().Update();
    }
}


Ook dit lijkt niet veel te doen, buiten de volgende foutboodschap dan:
The Update method can only be called on UpdatePanel with ID 'UpdatePanel1' before Render.
Dus nu zit ik even zonder inspiratie, hebben jullie nog ideetjes, suggesties of verbetering. Alvast heel hartelijk bedankt!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 18-11 20:57
Je probeert het nu serverside op te lossen. Op het moment dat bezoekers/gebruikers de webpagina hebben geladen, is het serverside verhaal klaar. Je zult dan clientside aan de gang moeten, zodat periodiek de updatepanels gerefresht worden.

We are shaping the future