asp:gridview分页上的System.Web.HttpException

时间:2009-10-23 22:53:31

标签: asp.net gridview pagination

我有以下<asp:gridview>和一个TemplateField。 在每个单元格中都有一个带有链接的图像和带有链接的文本。 它有 AllowPaging = True

这是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>

当我点击最后一个按钮或...时它会转到相应的页面但是当我点击上一页时我会收到以下错误:

发生错误,因为无法找到具有Id $ ContentPlaceHolder1 $ gvExperiencias $ ctl01 $ ctl01'的控件,或者在回发后将不同的控件分配给相同的ID。如果未分配ID,请显式设置引发回发事件的控件的ID属性,以避免此错误。

因此寻呼机无法正常工作。我认为这是因为必须动态生成Image的Id,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我怀疑GridView很混乱,因为并非模板中的所有元素都将runat =“server”设置为true。这弄乱了NamingContainer heirarchy。尝试在div元素上设置runat =“server”:

<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中添加一个id,并且div ID将被NamingContainer修改,所以如果你通过JavaScript引用它们,你将不得不使用它们的ClientID属性来确定它们的实际值。 id是。