C# GridView ASP.NET未触发OnPageIndexchange事件
我一直使用堆栈溢出来寻求帮助,但我从来没有在这个网站上发布过我自己的问题。我对使用ASP.NET web应用程序也有些陌生。我有一个GridView,它显示来自数据源的记录,并允许分页来查看网格的不同页面。网格加载良好并正确显示数据。我遇到的问题是,当点击一个页码时,什么都没有发生,我的断点也不会被页面加载或OnPageIndexchange触发。在MSDN上,它表示在网格上选择页码时将触发OnPageIndexchange事件,但这不会发生。我已经尝试了所有我在网上找到的关于这个问题的定期建议的修复方法,但问题仍然存在。我已经在下面发布了我的代码。谁能告诉我是什么原因导致此事件无法触发?提前谢谢C# GridView ASP.NET未触发OnPageIndexchange事件,c#,asp.net,.net,gridview,visual-studio-2013,C#,Asp.net,.net,Gridview,Visual Studio 2013,我一直使用堆栈溢出来寻求帮助,但我从来没有在这个网站上发布过我自己的问题。我对使用ASP.NET web应用程序也有些陌生。我有一个GridView,它显示来自数据源的记录,并允许分页来查看网格的不同页面。网格加载良好并正确显示数据。我遇到的问题是,当点击一个页码时,什么都没有发生,我的断点也不会被页面加载或OnPageIndexchange触发。在MSDN上,它表示在网格上选择页码时将触发OnPageIndexchange事件,但这不会发生。我已经尝试了所有我在网上找到的关于这个问题的定期建议
<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<br>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<br>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>
这应该是更多的评论,然后回答,但以我的声誉,我不能。所以 问题可能是因为您不想在OnPageIndexchange上执行,而是想在OnPageIndexchange上执行 问题还可能是因为您已将_grid_PageIndexChanging附加到gridview控制器的事件两次:第一次在.aspx文件中的控制器定义中,第二次在页面加载中。但老实说,它无论如何都应该起作用(被解雇两次应该不会受伤)。但我认为这是因为你在做了错误研究后第二次附加了它 另外,我建议您在Page_Load中执行所有操作,而不是在Page_Init中执行。
此事件处理程序在Page_Load之前,可以修复问题,因为在Page_Load上gridview可能已呈现或初始化?是否使用SqlDataReader?如果是,则更改为数据集。我也遇到过这样的问题,但当我换成数据集时,它起了作用。在
\u grid.PageIndex=e.NewPageIndex之后复制粘贴数据源代码>可能是个愚蠢的问题。。。但是,您确定您正在调试,而不仅仅是为了尝试命中断点而运行吗?此外,我不认为自动回发是网格视图的有效属性。这不是一个愚蠢的问题。。。是的,我正在调试,我在另一篇堆栈溢出文章中发现,AutoPostBack需要设置为true,分页才能正常工作。我尝试过使用和不使用AutoPostBack=true,但没有任何更改。感谢您的输入。您认为我为什么两次附加事件处理程序是正确的,但正如您所说的那样,它不应该有任何区别。我还尝试使用OnPageIndexChanged事件而不是OnPageIndexChanging,我也遇到了同样的问题。OnPageIndexChanged事件也不会触发。我将尝试将代码放入Page_Init中,看看是否有什么不同。再次感谢您的帮助。不幸的是,将页面加载代码移动到页面初始化中并没有任何区别。问题仍然存在……这是一个非常丑陋的错误/问题。然后,我建议收集有关web服务器和.NET运行时的所有信息-可能有些内容已过时或不兼容?我主要使用xsp服务器,它不支持一些东西。祝你好运我目前没有使用SqlDataReader,但在发布此问题之前,我确实使用SqlDataReader和数据集进行了尝试。不幸的是,这并没有解决事件未触发的问题。请设置PagerSettings Mode=“Numeric”。您的GridVIew中没有页面设置模式。谢谢Kio。我将PagerSettings Mode=“Numeric”放在GridView标记中,但仍然没有更改。单击页码时不会触发任何事件。
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();
}