Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gridview页面索引仅在感觉需要时更新_C#_Asp.net_Gridview - Fatal编程技术网

C# Gridview页面索引仅在感觉需要时更新

C# Gridview页面索引仅在感觉需要时更新,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个gridview,它接收的数据源有8621个条目,页面大小设置为20。第一页的显示方式与应有的完全相同。我单击链接以显示第2页,它也会按应有的方式显示。但是,之后的内容仍然是第2页。因此,如果我单击链接转到第3页,分页控件将更新为“我在第3页”,但显示的数据是第2页上的数据。我知道gridview获得了所有8621个条目,因为如果我将页面大小更改为200,它将显示这200个条目。为什么gridview可以正确地用于某些页面,而不能用于其他页面?不管怎样,我的漫谈已经够多了,下面是代码本身

我有一个gridview,它接收的数据源有8621个条目,页面大小设置为20。第一页的显示方式与应有的完全相同。我单击链接以显示第2页,它也会按应有的方式显示。但是,之后的内容仍然是第2页。因此,如果我单击链接转到第3页,分页控件将更新为“我在第3页”,但显示的数据是第2页上的数据。我知道gridview获得了所有8621个条目,因为如果我将页面大小更改为200,它将显示这200个条目。为什么gridview可以正确地用于某些页面,而不能用于其他页面?不管怎样,我的漫谈已经够多了,下面是代码本身:

<ajax:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<cb:SortedGridView ID="SearchUsersGrid" runat="server" AutoGenerateColumns="False" DataKeyNames="Email" 
  DefaultSortDirection="Ascending" DefaultSortExpression="Email"
  AllowPaging="true" PageSize="20" AllowSorting="true" Width="100%" SkinID="PagedList">
<Columns>
<asp:TemplateField HeaderText="In List">
  <ItemStyle HorizontalAlign="Center" />
  <ItemTemplate>
    <asp:CheckBox ID="IsInEmailList2" runat="server" checked='<%#IsInEmailList(Container.DataItem)%>' OnCheckedChanged="IsInEmailList_CheckedChanged" AutoPostBack="true" ></asp:CheckBox>
  </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Email" SortExpression="Email">
  <HeaderStyle HorizontalAlign="Left" />
     <ItemStyle HorizontalAlign="Left" />
      <ItemTemplate>
       <asp:HyperLink ID="NameLink2" runat="server" Text='<%# Eval("Email") %>' NavigateUrl='<%#GetEditUserUrl(Container.DataItem)%>'></asp:HyperLink>
      </ItemTemplate>
      </asp:TemplateField>
<asp:TemplateField HeaderText="Name" SortExpression="LastName">
  <HeaderStyle horizontalalign="Left" />
     <ItemStyle horizontalalign="Left" />
        <ItemTemplate>
          <asp:Label ID="FullNameLabel2" runat="server" Text='<%#GetFullName(Container.DataItem)%>'></asp:Label>
         </ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
  <div align="center">
    <asp:Label runat="server" ID="noUsersFound" enableViewState="false" Text="No matching users found."/>
  </div>
 </EmptyDataTemplate>
 </cb:SortedGridView>
 </ajax:UpdatePanel>
以及数据源本身

<asp:ObjectDataSource ID="SearchUsersDs" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="FindUsersByName" TypeName="Builder.Users.UserDataSource"
  SelectCountMethod="CountUsersByName" EnablePaging="True" SortParameterName="sortExpression" DataObjectTypeName="Builder.Users.User" DeleteMethod="Delete">
 <SelectParameters>
     <asp:ControlParameter ControlID="SearchText" Name="searchPattern" PropertyName="Text" Type="String" />
     <asp:ControlParameter ControlID="SearchByDropDown" Name="searchField" PropertyName="SelectedValue" Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>


没有PageIndexChanged事件。有什么想法吗?

卸下AJAX更新面板,检查它是否按预期工作。。另一个问题可能是,如果您在page_load中绑定网格,请确保它不会每次都发回。。放进去

if(!IsPostBack)
{
 SearchUsersGrid.Visible = true;
    SearchUsersGrid.DataSourceID = "SearchUsersDs";
    SearchUsersGrid.DataBind();

}

卸下AJAX更新面板并检查其是否按预期工作。。另一个问题可能是,如果您在page_load中绑定网格,请确保它不会每次都发回。。放进去

if(!IsPostBack)
{
 SearchUsersGrid.Visible = true;
    SearchUsersGrid.DataSourceID = "SearchUsersDs";
    SearchUsersGrid.DataBind();

}

我认为问题与我们的生产服务器有关。出于某种原因,该代码在我们的产品箱上非常有效(即使使用相同的数据)

我认为问题与我们的生产服务器有关。出于某种原因,该代码在我们的产品箱上非常有效(即使使用相同的数据)

这似乎无关紧要,但我认为它很重要;您正在使用UpdatePanel吗?是的,gridview被包装在UpdatePanel中
在主帖子中添加了代码。有人告诉我这是来自
CountUsersByName
FindUserByName
的数据错误对齐。在没有看到这两个函数的情况下,我只能假设@Brad,这是一些相当大的函数。我要去找他们,找到后把他们寄出去them@CountMurphy:你不一定要发布它们,只要确保它们彼此一致即可。也许单元测试是正确的?或者一个演示控制台应用程序来确保CountUsersByName==(FindUsersByName).count?看起来不相关,但我认为它很重要;您正在使用UpdatePanel吗?是的,gridview被包装在UpdatePanel中
在主帖子中添加了代码。有人告诉我这是来自
CountUsersByName
FindUserByName
的数据错误对齐。在没有看到这两个函数的情况下,我只能假设@Brad,这是一些相当大的函数。我要去找他们,找到后把他们寄出去them@CountMurphy:你不一定要发布它们,只要确保它们彼此一致即可。也许单元测试是正确的?或者一个演示控制台应用程序,以确保CountUsersByName==(FindUserByName)。count?