none
Utilisation "classique" d'Ajax dans une datalist RRS feed

  • Question

  • Bonjour,

    J'ai une question relativement simple, je pense.
    Je souhaite afficher le contenu d'un panel en utilisant l'évenement onclick sur un élément du datalist.

    Je m'explique...
    J'ai une datalist, que je rempli dynamiquement avec des databind du style:

    Extrait de code

    <asp:DataList ID="liste" runat="server" onselectedindexchanged="liste_SelectedIndexChanged"                    >

    <SelectedItemStyle BorderColor="#3366FF" orderStyle="Outset" BorderWidth="2px" />

         <ItemTemplate>

    <asp:Panel id="paneltoto">
              <%# DataBinder.Eval(Container.DataItem, "cd_machine") %>
    ...                   
    <asp:linkbutton ID="lbVoir"
    CommandArgument='<%# DataBinder.Eval(Container.DataItem, "cd_machine")%>'
    Text='Voir' CommandName="Select" style="" runat="server" />
    </asp:Panel>
    </ItemTemplate>                           

    </asp:DataList>




    J'ai ensuite une autre zone (zoneStats) que je veux afficher avec un onclick sur un élément de la liste. Pour l'instant je ne l'affiche qu'en cliquant sur l'hyperlink de ma liste, avec un trigger:
    Extrait de code

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" >
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="liste" />
            </Triggers>
            <ContentTemplate>
                <asp:Panel ID="zoneStats" runat="server" />
            </ContentTemplate>
    </asp:UpdatePanel>



    J'ai après un code serveur qui se charge de remplir la zone:

    Extrait de code

    protected void liste_SelectedIndexChanged(object sender, EventArgs e)
    {
            zoneStats.Visible = true;
            remplirZoneStats(...);
    }

    protected void remplirZoneStats(int machine)
    {
            ....

    }

    Je voudrais pouvoir appeler cette méthode serveur à partir d'un code javascript que j'aurais créé moi même, et ne pas être cantonné à l'utilisation d'un hyperlink asp... En effet, le trigger pour l'update de mon panel "zoneStats" est lié par défaut à l'hyperlink, je ne sais pas comment faire autrement.

    Me suis-je fais comprendre?
    En gros avoir une utilisation d'Ajax "classique", telle que l'on peut l'avoir dans jQuery :
    Extrait de code

    <div id="zoneStats" onclick="$(this).load('calcul_serveur.aspx')">



    Donc... Quelle est la syntaxe à utiliser côté client en ASP.NET pour charger le résultat de l'exécution d'une méthode serveur??? Est-il possible de ne faire exécuter au serveur qu'UNE méthode ?

    Merci d'avance.
    mardi 8 janvier 2008 08:50

Toutes les réponses