2009-10-23 2 views
0

J'ai le suivant <asp:gridview> avec un one TemplateField. Dans chaque cellule, il y a une image avec un lien et un texte avec un lien. Il a AllowPaging = TrueSystem.Web.HttpException sur asp: pagination gridview

C'est le gridview:

<asp:GridView ID="gvExperiencias" runat="server" AllowPaging="True" GridLines="None" 
    ShowHeader="False" AutoGenerateColumns="False" Width="650px" PageSize="4" 
    OnDataBinding="gvExperiencias_DataBinding" 
    OnPageIndexChanging="gvExperiencias_PageIndexChanging"> 
     <PagerSettings Mode="NumericFirstLast" 
      FirstPageImageUrl="~/images/fle_pag_izq.gif" 
      LastPageImageUrl="~/images/fle_pag_der.gif" 
      NextPageImageUrl="~/images/fle_pag_der.gif" 
      PreviousPageImageUrl="~/images/fle_pag_izq.gif" 
      Position="TopAndBottom" PageButtonCount="4" FirstPageText="" 
      LastPageText="" NextPageText="" PreviousPageText="" /> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <div id="it_0" class="new_solo_exp_ini"> 
         <asp:HyperLink ID="a_0" runat="server" Visible='<%# Eval("NotEmpty_0") %>' 
          NavigateUrl='<%# "experiencia.aspx?cod_cod=" + Eval("tttb_articulo_relacion_0.ARTCOD_ARTREL") + "&pag=" + pag + "&grp=" + Eval("idiocod_cod_idi_0") + "&cod="+cod %>'> 
          <asp:Image ID="Image_0" runat="server" Height="88px" 
           ImageUrl='<%# Eval("arigls_nom_img_0","~/ArchivosUsuario/1/1/Articulos/{0}") %>' 
           Width="88px" CssClass="new_image_exp_ini" /> 
         </asp:HyperLink> 
         <div class="new_vineta_tit_exp_ini"> 
          <asp:HyperLink ID="HyperLink_0" runat="server" 
           NavigateUrl='<%# "experiencia.aspx?cod_cod=" + Eval("tttb_articulo_relacion_0.ARTCOD_ARTREL") + "&pag=" + pag + "&grp=" + Eval("idiocod_cod_idi_0") + "&cod="+cod %>' 
           Text='<%# Bind("arigls_tit_0") %>'> 
          </asp:HyperLink> 
         </div> 
       </div> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
    <PagerStyle CssClass="new_pag_bajo_exp_ini" /> 
    <RowStyle CssClass="new_fila_exp_ini" /> 
</asp:GridView> 

Lorsque je clique sur le dernier bouton ou ... il va à la page correspondante, mais quand je clique sur une page précédente i obtenir l'erreur suivante:

Une erreur s'est produite car un contrôle avec l'ID $ ContentPlaceHolder1 $ gvExperiencias $ ctl01 $ ctl01 'n'a pas pu être localisé ou un autre contrôle est affecté au même ID après la publication. Si l'ID n'est pas affecté, définissez explicitement la propriété ID des contrôles qui déclenchent les événements de publication afin d'éviter cette erreur.

Le téléavertisseur ne fonctionne donc pas correctement. Je pense que c'est à cause de l'identifiant de l'image qui doit être généré dynamiquement mais je ne sais pas comment le faire.

Répondre

0

Je soupçonne que le GridView est confus car tous les éléments du modèle n'ont pas runat = "server" défini sur true. Cela chamboule la hiérarchie de NamingContainer. Essayez de régler runat = « server » sur vos éléments div:

<ItemTemplate> 
<div id="it_0" class="new_solo_exp_ini" runat="server"> 
    <asp:HyperLink ID="a_0" runat="server" NavigateUrl='<%# "experiencia.aspx?cod_cod=" + Eval("tttb_articulo_relacion_0.ARTCOD_ARTREL") + "&pag=" + pag + "&grp=" + Eval("idiocod_cod_idi_0") + "&cod="+cod %>' 
     Visible='<%# Eval("NotEmpty_0") %>'> 
     <asp:Image ID="Image_0" runat="server" Height="88px" ImageUrl='<%# Eval("arigls_nom_img_0","~/ArchivosUsuario/1/1/Articulos/{0}") %>' 
      Width="88px" CssClass="new_image_exp_ini" /> 
    </asp:HyperLink> 
    <div id="some_id" class="new_vineta_tit_exp_ini" runat="server"> 
     <asp:HyperLink ID="HyperLink_0" runat="server" NavigateUrl='<%# "experiencia.aspx?cod_cod=" + Eval("tttb_articulo_relacion_0.ARTCOD_ARTREL") + "&pag=" + pag + "&grp=" + Eval("idiocod_cod_idi_0") + "&cod="+cod %>' 
      Text='<%# Bind("arigls_tit_0") %>'> 
     </asp:HyperLink> 
    </div> 
</div> 

Vous devez également ajouter un identifiant à la deuxième div, et la div ids sera modifié par le NamingContainer, donc si vous les référencez via JavaScript, vous devrez utiliser leur propriété ClientID pour déterminer leur identifiant réel.

Questions connexes