更改页面后,Gridview会消失

本文关键字:Gridview 消失 | 更新日期: 2023-09-27 18:09:17

我有一个网格视图,应该分成页面,但问题是,当我改变页面,整个网格视图消失,我尝试了一切我在互联网上找到的,但没有解决方案,这里是我的代码

<asp:GridView ID="ExistContents" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None"
    AllowPaging="true" PageSize="5"    OnPageIndexChanging="ExistContents_PageIndexChanging" >
    <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    <Columns>
        <asp:BoundField DataField="ContentID" HeaderText="id" />
        <asp:ImageField DataImageUrlField="TmpFilename" HeaderText="Image">
            <ControlStyle Height="64px" Width="96px" />
        </asp:ImageField>
        <asp:BoundField DataField="Name" HeaderText="Name" />
        <asp:BoundField DataField="Description" HeaderText="Description" />
        <asp:BoundField DataField="Type" HeaderText="Type" />
        <asp:BoundField DataField="ContentID" HeaderText="id" Visible="false" ShowHeader="false" />
        <asp:TemplateField HeaderText="Delete">
            <ItemTemplate>
                <asp:UpdatePanel runat="server">
                    <ContentTemplate>
                        <asp:CheckBox runat="server" ID="ChBox1"  OnCheckedChanged="ExistContents_CheckedChanged" AutoPostBack="True"/>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <EditRowStyle BackColor="#999999" />
    <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White"  CssClass="header"/>
    <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
    <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
    <SortedAscendingCellStyle BackColor="#E9E7E2" />
    <SortedAscendingHeaderStyle BackColor="#506C8C" />
    <SortedDescendingCellStyle BackColor="#FFFDF8" />
    <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>

这里是事件处理程序

protected void ExistContents_PageIndexChanging(object sender, GridViewPageEventArgs e)
{        
    ExistContents.PageIndex = e.NewPageIndex;
    List<CONTENT> panier;
    panier = (List<CONTENT>)Session["PANIER"];
    ExistContents.DataSource = panier;
    ExistContents.DataBind();
}

更改页面后,Gridview会消失

您应该处理PageIndexChanged事件。

设置pageIndexChanging是为了在分页执行之前给您一个取消分页的选项。

这是这个问题的答案,实际上我的数据源不是会话而是一个linq查询所以我改变了它,它工作得很好

这是我的新代码
        protected void ExistContents_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chk = (CheckBox)sender;
        GridViewRow gr = (GridViewRow)chk.Parent.Parent.Parent.Parent;
        int id= Convert.ToInt32(gr.Cells[0].Text);
        if (chk.Checked)
            AddToCaddy(id, "DELETE");
        else
            DeleteFromCaddy(id);
        UpdatePanel.DataBind();
        UpdatePanel.Update();
    }

仅供参考,如果你在if (!IsPostBack)中的Page_Load中对gridview进行数据绑定,那么你需要重新找到数据源,但如果你不这样做,那么你只需要使用这些函数

UpdatePanel.DataBind(); UpdatePanel.Update();

我希望这对你有帮助