更改页面后gridview消失

时间:2015-08-23 22:59:48

标签: c# asp.net gridview

我有一个gridview应该拆分成页面,但问题是,当我更改页面时,整个gridview正在消失我尝试了我在互联网上找到的所有东西,但这里没有解决方案是我的代码

<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();
}

2 个答案:

答案 0 :(得分:0)

您应该处理PageIndexChanged事件。

使pageIndexChanging为您提供在执行之前取消分页的选项。

答案 1 :(得分:0)

这里是这个问题的答案,实际上我的数据源不是会话而是linq查询所以我改变它并且它完美地工作

这是我的新代码

<div id="content"> 

只是为了获取信息,如果你在 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(); } 内的Page_Load中为你的gridview创建一个数据绑定,那么你将需要重新修改dataSource,但如果你没有,那么你只需要使用这些函数

if (!IsPostBack)

我希望这有帮助