2009-10-23 2 views
0

У меня есть <asp:gridview> с одним TemplateField. В каждой ячейке есть изображение со ссылкой и текстом со ссылкой. имеет AllowPaging = TrueSystem.Web.HttpException on asp: gridview pagination

Это 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> 

При нажатии последней кнопки или ... она идет на соответствующую страницу, но когда я нажимаю на предыдущей странице я получите следующую ошибку:

Ошибка произошла из-за того, что элемент управления с идентификатором $ ContentPlaceHolder1 $ gvExperiencias $ ctl01 $ ctl01 'не может быть расположен или другой элемент управления. Если идентификатор не назначен, явным образом устанавливаю свойство ID элементов управления, которое вызывает события обратной передачи, чтобы избежать этой ошибки.

Таким образом, пейджер работает неправильно. Я думаю, что это из-за Идентификатора изображения, который должен генерироваться динамически, но я не знаю, как это сделать.

ответ

0

Я подозреваю, что GridView запутан, потому что не все элементы в шаблоне имеют значение runat = "server" равное true. Это испортит инархию NamingContainer. Попробуйте установить RUNAT = «сервер» на ваших 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> 

Вы также должны добавить идентификатор на второй DIV и DIV Идентификаторы будет модифицирован NamingContainer, так что если вы ссылаетесь на них через JavaScript, вам нужно будет использовать их свойство ClientID, чтобы определить, каков их фактический идентификатор.