none
Id d'un controle imbriqué en ajax RRS feed

  • Question

  • Bonjour,


    J'aimerais savoir comment récupérer l'id client d'un contrôle imbriqué grâce à une fonction javascript.

    J'ai un contrôle (telerik) RadWindow contenu dans un gridview et j'aimerai ouvrir ce RadWindow via un appel a ma fonction ShowWindow().

    Le seul probleme est que je n'arrive pas à récupérer l'id client (de la forme "ctl00_JobContent_InksGridView_ctl02_InkRadWindow") de mon controle.

    J'ai essayé avec $find mais celà n'a rien donné. Etant donné que c'est une controle imbriqué, j'obtiens l'erreur suivante:

    $find the name 'InkRadWindow' does not exist in the current context.

    Voici une partie de mon code:

     <asp:GridView ID="InksGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="InksId,R,G,B,FileName,PopupPath"
            DataSourceID="InksEntityDataSource" OnRowDataBound="InksGridView_RowDataBound"
            Width="60%" OnRowCommand="InksGridview_RowCommand" GridLines="Horizontal">
            <Columns>
                <asp:TemplateField ShowHeader="false">
                    <ItemTemplate>
                        <asp:LinkButton ID="DeleteLinkButton" runat="server" Text="delete" CommandName="DeleteFile"
                            CommandArgument='<%# Bind("InksId") %>'></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField ShowHeader="false">
                    <ItemTemplate>
                        <asp:Image runat="server" ID="ColorIcon" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Nom du Tiff" SortExpression="FileName">
                    <ItemTemplate>
                        <asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Bind("FileName") %>' OnClientClick="ShowWindow(); return false;"></asp:LinkButton>
                        <telerik:RadWindow ID="InkRadWindow" OffsetElementID="InksGridView" runat="server"
                            ShowContentDuringLoad="false" Title="Image" Behaviors="Close" VisibleStatusbar="false"
                            Modal="true" VisibleTitlebar="False" Width="950" Height="725">
                            <ContentTemplate>
                                <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# Eval("PopupPath") %>'
                                    OnClientClick="window.close();" Width="900" Height="675" />
                            </ContentTemplate>
                        </telerik:RadWindow>
                    </ItemTemplate>
                </asp:TemplateField>

    Existe-t-il une solution pour récupérer cet id?

    Soit côté client directement, soit côté serveur pour ensuite l'utiliser côté client?

    Cordialement,

    Erwan

    jeudi 19 avril 2012 09:19

Réponses

  • J'ai réussi à obtenir la liste des Radwindow existantes dans la page:

    <script type="text/javascript">
    
            function ShowWindow() {
    
                var v = $telerik.$("[id*=InkRadWindow]")[0].id;
                alert(v);
                var win = $find(v);
                win.show();
            }
        
        </script>
    Le problème maintenant est de récupérer l'id correspondant au row qui à été clické dans le gridview.

    jeudi 19 avril 2012 09:56
  • Apres de longues reflexions j'ai enfin trouvé une solution:

            protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
            {            
                LinkButton plb = e.Row.FindControl("PopupLB") as LinkButton;
                if (plb != null)
                    plb.Attributes.Add("onClick", "ShowWindow(" + e.Row.RowIndex + "); return false;");
            }

    De ce fait, je peux donner l'index correspondant au row cliqué lors de mon appel a ShowWindow()

    De plus, j'ai remplacé * par $ dans ma JQuery. Ainsi, je ne récupère que les id clients finissants par "InkRadWindow".

    <script type="text/javascript">
    
            function ShowWindow(index) {
    
                var v = $telerik.$("[id$=InkRadWindow]")[index].id;
                var win = $find(v);
                win.show();
            }
        
        </script>

    Merci pour à moi même :)

    • Modifié Erwanage vendredi 20 avril 2012 08:45
    • Marqué comme réponse Erwanage vendredi 20 avril 2012 08:45
    vendredi 20 avril 2012 08:29

Toutes les réponses