System.Web.HttpException на asp: gridview нумерация страниц - PullRequest
0 голосов
/ 24 октября 2009

У меня есть следующее <asp:gridview> с одним шаблоном TemplateField. В каждой ячейке есть изображение со ссылкой и текст со ссылкой. Имеет AllowPaging = True

Это сетка:

<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 'или другой элемент управления назначен тому же идентификатору после обратной передачи. Если идентификатор не назначен, явно задайте свойство идентификатора элементов управления, которые вызывают события обратной передачи, чтобы избежать этой ошибки.

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

1 Ответ

0 голосов
/ 24 октября 2009

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

...