2015-10-15 106 views
0

在碰撞了好几天之后,我决定寻求帮助,因为我坚持了我认为可能是.NET 4.6的错误。Gridview分页升级到.Net后无法正常工作4.6

我有一个带分页的对象数据源的网格视图(波纹管是一个简化版本),并且一切正常。在常规的Windows更新后的一天,gridview开始有一个奇怪的行为(我会在后面解释),并且在排除故障之后,我意识到这是由于已经安装的.Net 4.6升级引起的。我能够在多台Windows 2012 R2机器和Windows 8.1(包括Visual Studio 2013中的一台)上重现问题,并且当我移除.Net 4.6时,所有事情都再次开始。

我有一个Windows 8.1与VS 2015,所以我测试了它,也能够重现该问题(在VS2015我无法删除。NET 4.6,因为它是VS2015的要求)。为了进一步调试我一直使用VS2015的问题。

为了使解释更容易,我发布了VS2015版本,它是原始gridview的精简版本,并且我一直在使用它进行测试。

<%@ Page Title="Top of Shame" Language="C#" CodeBehind="HallOfShame.aspx.cs" Inherits="SissdwWebSite.Siss.SwingWorker.HallOfShame" EnableViewState="false" %> 
<body> 
<form runat="server"> 
    <asp:GridView 
     ID="GvSwingWorkersOfShame" runat="server" DataSourceID="DsSwingWorkersOfShame" AutoGenerateColumns="false" PagerSettings-Mode="NextPreviousFirstLast" 
     AllowPaging="True" AllowCustomPaging="true"> 
     <Columns> 
      <asp:BoundField DataField="RowNumber" HeaderText="Pos." ItemStyle-HorizontalAlign="Right" /> 
     </Columns> 
    </asp:GridView> 
    <p></p> 

    <asp:ObjectDataSource ID="DsSwingWorkersOfShame" runat="server" EnablePaging="true" 
     SelectMethod="GetData" TypeName="SissdwWebSite.DataLayer.SissdwTableAdapters.HallOfShameTableAdapter" 
     SelectCountMethod="GetHallOfShameCount"> 
     <SelectParameters> 
      <asp:Parameter Name="CodOper" Type="String" ConvertEmptyStringToNull="false" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 
</form> 
</body> 

GridView的预期产生类似的一个波纹管列表(原始版本有大约10个列,但我剥夺它归结为只是第一个与行号让事情变得更容易理解)。输出是HTML,但我不能在这里重现它,但你明白了。

Pos。

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

< < < >>>

现在的问题:在上面的代码中,gridview的工程完全按照预期。如果我把这个自定义寻呼机(或者我尝试过的其他几种组合)放在一起,那么gridview开始落后一下。

 <PagerTemplate> 
      <table> 
       <tr> 
        <td style="width: 30%"> 
         <asp:LinkButton runat="server" ID="First" CommandArgument="First" CommandName="Page"> 
          <img id="imgFirst" runat="server" src="~/images/2leftarrow.png" height="16" width="16" /> 
         </asp:LinkButton> 
         <asp:LinkButton runat="server" ID="Prev" CommandArgument="Prev" CommandName="Page"> 
          <img id="imgPrev" runat="server" src="~/images/1leftarrow.png" height="16" width="16" /> 
         </asp:LinkButton> 
         <asp:LinkButton runat="server" ID="Next" CommandArgument="Next" CommandName="Page"> 
          <img id="imgNext" runat="server" src="~/images/1rightarrow.png" height="16" width="16" /> 
         </asp:LinkButton> 
         <asp:LinkButton runat="server" ID="Last" CommandArgument="Last" CommandName="Page"> 
          <img id="imgLast" runat="server" src="~/images/2rightarrow.png" height="16" width="16" /> 
         </asp:LinkButton> 
        </td> 
       </tr> 
      </table> 
     </PagerTemplate> 

通过相对滞后点击,我的意思是,在我第一次点击前进箭头,什么都不会发生上显示(但PageIndex的移动从0到1)的结果。第二次,它显示位置11-20,内部PageIndex从1移动到2等。

再往下看,如果我点击“go to first”,它只会进入第一页时我做了其他一些行动(即总是落后于一个命令)。我不知道这是非常清楚的,但有一个小标签显示当前页面,它显示了我最后一个命令后面的一个“页面”。

请记住,如果我删除寻呼机模板一切顺利,并在。净4.5.2一切运作良好,无论寻呼机模板。

我试图调试.NET 4.6框架,但我无法理解它足以弄清楚发生了什么。

总结:是.net 4.6错误,还是我错过了什么?有没有办法让我的GridView在.NET 4.6上正常工作,通过修复我的代码或其他解决方法?

任何建议,以进一步解决这个问题很好来...

编辑:一些额外的澄清这个问题。我在几个事件处理程序的每个舞台上打印PageIndex。 在初始页面加载

Page_Load =0 
GvSwingWorkersOfShame_DataBinding =0 
GvSwingWorkersOfShame_DataBound =0 

Pos. 

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

点击时间向前后:

Page_Load =0 
GvSwingWorkersOfShame_DataBinding =0 
GvSwingWorkersOfShame_DataBound =0 
GvSwingWorkersOfShame_PageIndexChanging =0 
GvSwingWorkersOfShame_PageIndexChanged =1 
GvSwingWorkersOfShame_DataBinding =1 
GvSwingWorkersOfShame_DataBound =1 

Pos. 

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
+0

经过更多的故障排除后,我设法缩小了它的EnableViewState。使用.Net 4.5.2,它可以在页面级别使用EnableViewState =“false”,使用4.6即使在gridview和/或数据源中设置EnableViewState =“true”,它也不起作用。但是,如果我在页面级别设置它,它工作正常。问题是,原始网站上的网页正在从母版页继承,我需要将其打开并且会影响整个网站:( –

回答

0

这是4.6.1回归。该错误已在4.6.1中修复。您可以安装4.6.1 RC来验证修复并等待即将发布的RTM。

+0

谢谢。我会看一看,然后我会发布回来 –

+0

它的工作原理!这个bug被固定在4.6.1上。 –

相关问题