2015-07-20 74 views
2

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

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

之后复制粘贴你的数据源可能是一个愚蠢的问题......但是你确定你正在调试,而不是试图打破你的断点运行?此外,我不认为AutoPostBack是网格视图的有效属性。 – Kritner

+0

这不是一个愚蠢的问题......是的,我正在调试,我发现在另一个堆栈溢出帖子中,AutoPostBack需要设置为true才能使分页正常工作。我已经尝试过,没有AutoPostBack = true,它没有改变。 –

回答

0

应该那么更多的评论回答,但我的名誉我不能。所以...

问题可能是你想做的不是onPageIndexChanging而是OnPageIndexChanged。

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

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

+0

谢谢你的投入杰里。你假设我为什么附加了事件处理程序两次是正确的,但它应该没有任何区别,就像你说的那样。我也尝试使用OnPageIndexChanged事件而不是OnPageIndexChanging,我有同样的问题。 OnPageIndexChanged事件不会触发。我会尝试将代码放入Page_Init中,看看它是否有任何区别。再次感谢你的帮助。 –

+0

不幸的是,将Page_Load代码移入Page_Init没有任何区别。问题仍然存在... –

+0

这是一个非常丑陋的问题。我会建议然后收集有关Web服务器和.NET运行时的所有信息 - 可能是过时的或不兼容的?我主要使用xsp服务器,它不支持几件事情。祝你好运! –

0

你在使用SqlDataReader吗?如果是,则更改为DataSet。我也遇到过这样的问题,但是当我更改为DataSet时,它工作。在_grid.PageIndex = e.NewPageIndex;

+0

我目前没有使用SqlDataReader,但在发布此问题之前,我曾尝试使用SqlDataReader和DataSet。不幸的是,这并没有解决我的事件没有解决问题。 –

+0

Set PagerSettings-Mode =“Numeric”。您的GridVIew中没有PagerSettings-Mode。 –

+0

谢谢Kio。我在GridView标签中放置了PagerSettings-Mode =“Numeric”,但仍然没有改变。点击寻呼号码时不会触发任何事件。 –