【问题标题】:asp grid takes two click to sort the dataasp网格需要两次点击来对数据进行排序
【发布时间】:2017-12-02 02:30:21
【问题描述】:

我正在尝试在我的网格上应用排序,但在页面加载时需要两次单击才能对数据进行排序。所以当页面加载时。 首先单击任何列)-> 没有排序,但我看到页面正在刷新

第二次点击在任何列上都会对数据进行排序。然后再次重新加载页面后,它将适用于任意次数的点击。

aspx:

  <asp:GridView id="SubGrid" runat="server" AutoGenerateColumns="False"
            CellPadding="15" AllowPaging="True" PageSize="20" AllowSorting="True" 
            EmptyDataText="There are now submission to display."
            ShowHeaderWhenEmpty="True" DataKeyNames="SubmissionID,Abstract,info,upload,finalized,Submitter"
            OnRowCreated="SubGrid_RowCreated" OnRowDataBound="SubGrid_RowDataBound" DataSourceID="SqlDataSource1">

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringTest %>" SelectCommand="sb_Getvelue" SelectCommandType="StoredProcedure">
        <SelectParameters>

代码背后:

在代码后面我有两个方法

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

Protected Sub SubGrid_RowCreated(sender As Object, e As GridViewRowEventArgs)
----Some Custom Code to add a extra line on top of the grid.
End Sub

 Protected Sub SubGrid_RowDataBound(sender As Object, e As
GridViewRowEventArgs)
----- Some code to add tool tip ----
End Sub

【问题讨论】:

    标签: asp.net sorting gridview datagrid


    【解决方案1】:

    我在 C# 中遇到过类似的问题,我不确定 VB 等价物是否有帮助,但请检查页面加载时的回发。

    我必须在 Page_Load 中添加

    if(!IsPostBack)
    

    一旦我添加了这个,随后的调用就会首先点击。

    希望对你有帮助。

    【讨论】:

    • 我发现当我第一次单击第一列进行排序时,myGrid.SortExpression 始终是一个空白值。当我第二次单击时,它给了我正确的值。所以我最终在“IsPostBack = False”if语句中的页面加载方法中设置我的网格的顺序。我猜想在页面最初加载时初始化网格排序顺序。在完成这个网格排序之后,它应该是这样的。我在下面添加了我的解决方案。
    【解决方案2】:

    我找到了这个问题的解决方案。这是我背后的想法和逻辑。让我知道我是否错了。

    数据与 SqlDataSource 绑定,我的 SelectCommandType 是存储过程。我的存储过程返回已经按 ID 排序的结果(这是我的第一列)。现在我发现在第一次尝试期望“ID”列时,所有列的排序都很好。此外,当我单击列对数据进行排序时,myGrid.SortExpression 总是返回空白值。所以我认为网格已经通过存储过程按 ID 按 ASC 顺序排序,当我第一次单击 ID 列时,它再次按 ASC 顺序对网格进行排序,因为它没有初始化并且排序顺序为空白。

    所以我在 page_load 中添加了这段代码

    If IsPostBack = False Then
    
                If String.IsNullOrEmpty(myGrid.SortExpression) Then
                    myGrid.Sort("SubmissionID", SortDirection.Ascending)
                End If
            End If
    

    这将在页面加载时按 ASC 顺序初始化网格,现在当我第一次单击 ID 列时,它会按 DESC 顺序对网格进行排序。所以在页面加载时初始化网格排序顺序对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 2016-08-27
      • 2015-07-02
      • 2012-02-25
      • 1970-01-01
      相关资源
      最近更新 更多