未触发GridView ASP.NET

时间:2015-07-20 16:13:59

标签: c# asp.net .net gridview visual-studio-2013

我一直使用Stack Overflow寻求帮助,但我从未在本网站上发布自己的问题。我对使用ASP.NET Web应用程序也有些新意。我有一个GridView,它显示来自数据源的记录,并允许分页查看网格的不同页面。网格加载正常并正确显示数据。我遇到的问题是,当点击页码时没有任何反应,并且我的断点不会被触发为Page_Load或OnPageIndexChanging。在MSDN上,它表示在网格上选择页码时会触发OnPageIndexChanging事件,但这不会发生。我已尝试过针对此问题在网上找到的所有定期建议的修复程序,但问题仍然存在。我在下面发布了我的代码。谁能告诉我什么可能导致这个事件不被触发?谢谢!

<asp:GridView ID="_grid" runat="server" AutoGenerateColumns="False" CellPadding="4" AutoPostBack="true"
                ForeColor="#333333" GridLines="None" AllowSorting="True" EnableTheming="False" DataSourceID="vw_SpecFoodBuyerCodeDataSource" Width="100%" AllowPaging="true" OnPageIndexChanging="_grid_PageIndexChanging" OnSelectedIndexChanged="_grid_OnSelectedIndexChanged">
                <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <Columns>
                    <asp:TemplateField>
                        <EditItemTemplate>
                            <asp:CheckBox ID="CheckBox1" runat="server" />
                        </EditItemTemplate>
                        <HeaderTemplate>
                            <asp:CheckBox ID="_headerCheckBox" runat="server" AutoPostBack="True" OnCheckedChanged="_headerCheckBox_CheckedChanged" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="_rowCheckBox" runat="server" />
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:HyperLinkField DataNavigateUrlFields="SpecId" DataNavigateUrlFormatString="~/SpecPdf.aspx?SpecId={0}"
                        DataTextField="SpecNumber" HeaderText="Spec#" SortExpression="SpecNumber" />
                    <asp:BoundField DataField="Revision" HeaderText="Rev" SortExpression="Revision" />
                    <asp:BoundField DataField="SCNumber" HeaderText="SC#" SortExpression="SCNumber" />
                    <asp:BoundField DataField="SCDescription" HeaderText="SC Description" SortExpression="SCDescription">
                        <ItemStyle HorizontalAlign="Left" Wrap="False" />
                    </asp:BoundField>
                    <asp:BoundField DataField="VendorName" HeaderText="Supplier" SortExpression="VendorName" >
                        <ItemStyle HorizontalAlign="Left" />
                    </asp:BoundField>
                    <asp:BoundField DataField="BuyerCode" HeaderText="Buyer" SortExpression="BuyerCode" />
                    <asp:BoundField DataField="ApprovedDate" HeaderText="Approved" DataFormatString="{0:d}" HtmlEncode="False" SortExpression="ApprovedDate" />
                    <asp:BoundField DataField="UpdateNeededDate" DataFormatString="{0:d}" HeaderText="Update Required&lt;br&gt;As Of" HtmlEncode="False" SortExpression="UpdateNeededDate" />
                    <asp:BoundField DataField="ApproveUpdateNeededDate" DataFormatString="{0:d}" HeaderText="Update Sent"
                        SortExpression="ApproveUpdateNeededDate" />
                    <asp:BoundField DataField="ReceivedUpdateNeededDate" DataFormatString="{0:d}" HeaderText="Update&lt;br&gt;Received" HtmlEncode="False" SortExpression="ReceivedUpdateNeededDate" />
                </Columns>
                <RowStyle BackColor="#EFF3FB" />
                <EditRowStyle BackColor="#2461BF" />
                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
            </asp:GridView>
<asp:LinqDataSource ID="vw_SpecFoodBuyerCodeDataSource" runat="server" ContextTypeName="PPQAD_QASpecFoodDataLinq.PPQAD_QASpecFoodDataContextManaged" EntityTypeName="" 
    OnSelecting="vw_SpecFoodBuyerCodeDataSource_Selecting" TableName="vw_SpecFoodBuyerCodes">
</asp:LinqDataSource>

和C#代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            _buyerCodeListBox.DataSource = WebHelpers.GetCachedBuyerCodes(Page);
            _buyerCodeListBox.DataBind();
            _grid.PageIndexChanging += new GridViewPageEventHandler(_grid_PageIndexChanging);
            _grid.EnableViewState = true;
            SelectBuyerCodesForCurrentUser();
            _grid.DataBind();
        }
    }
protected void _grid_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        _grid.PageIndex = e.NewPageIndex;
        _grid.DataBind();
    }

2 个答案:

答案 0 :(得分:0)

应该更多的评论然后回答,但凭借我的声誉我不能。所以......

问题可能在于你不想在OnPageIndexChanging上而是在OnPageIndexChanged上。

问题也可能是因为你已经将_grid_PageIndexChanging连接到gridview控制器的两次事件:第一次在.aspx文件中的控制器定义中,第二次在Page_Load中。但老实说 - 无论如何它应该工作(两次不应该受伤)。但是我认为你在进行错误研究后第二次附上它。

另外,我会在Page_Load而不是Page_Init中做你所做的所有事情。 此事件处理程序位于Page_Load之前,可以解决问题,因为Page_Load可能已经呈现或启动了gridview?

答案 1 :(得分:0)

您使用的是SqlDataReader吗?如果是,则更改为DataSet。我也遇到过这种问题,但当我改为DataSet时,它确实有效。还可以在_grid.PageIndex = e.NewPageIndex;

之后复制粘贴数据源