Gridview没有排序

时间:2014-08-01 14:45:15

标签: asp.net vb.net sorting gridview

我遇到了这个奇怪的错误,现在已经困扰了我几个小时。

我的屏幕上有一些LinkBut​​tons,根据用户选择标签的文本设置,会显示一个GridView,并根据标签的文本分配此GridView的数据源。

这一切都很好,花花公子。但是当我想对这个GridView进行排序时会出现问题。

目前,没有任何反应。当我尝试对列进行排序时,页面只是刷新,并且我在GridView中留下了相同的未分类的混乱。


我已经将我的应用程序置于带有断点的调试模式中,并注意到当我进入此步骤时(完整代码可以在本文的底部看到):

senderGridView.SortExpression = button.CommandArgument

senderGridView.SortExpression是“”因此由于某种原因它没有传递排序表达式。


希望有人可以告诉我为什么我的网格没有排序,因为我确定这只是一个愚蠢的错误,但任何帮助都会受到赞赏,谢谢。

您可能需要的代码......

创建行时设置排序图像的子项可以在下面看到:

Protected Sub GridViewSortImages(ByVal sender As Object, ByVal e As GridViewRowEventArgs)

        Dim senderGridView As GridView = CType(sender, GridView)

        'Loop through each cell in header row
        For Each cell As TableCell In e.Row.Cells
            If cell.HasControls Then
                Dim button As LinkButton = TryCast((cell.Controls(0)), LinkButton)
                Dim gv As New HtmlGenericControl("div")
                Dim lnkName As New Label()

                'Test cell to see if a link button exists (i.e. Allow Sorting = True)
                If Not (button Is Nothing) Then

                    'Create new label and image and set to standard unsorted view
                    lnkName.Text = button.Text
                    Dim image As New System.Web.UI.WebControls.Image
                    image.ImageUrl = "images/sort-1x1.png"
                    image.ToolTip = "Sort"
                    image.AlternateText = "Sort"

                    'Test to see if grid is already sorted, and apply relevant image & tooltip
                    If senderGridView.SortExpression = button.CommandArgument Then
                        If senderGridView.SortDirection = SortDirection.Ascending Then
                            image.ImageUrl = "images/sort-asc.png"
                            image.ToolTip = "Sort Descending"
                            image.AlternateText = "Sort Descending"
                        Else
                            image.ImageUrl = "images/sort-desc.png"
                            image.ToolTip = "Sort Ascending"
                            image.AlternateText = "Sort Ascending"
                        End If
                    End If

                    'Add label and image to new div
                    gv.Controls.Add(lnkName)
                    gv.Controls.Add(image)

                    'Replace original column header with new div
                    button.Controls.Add(gv)
                End If
            End If
        Next

    End Sub

我的RowCreated子网格为GridView ...

Protected Sub grvHomeRisk_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles grvHomeRisk.RowCreated

        If Not (e.Row Is Nothing) AndAlso e.Row.RowType = DataControlRowType.Header Then
            GridViewSortImages(sender, e) 'Call sort code
        End If

    End Sub

我的排序子...

Protected Sub grvHomeRisk_Sorting(sender As Object, e As GridViewSortEventArgs) Handles grvHomeRisk.Sorting

        Select Case lblBreachHeaderb.Text
            Case "Current Risks"
                grvHomeRisk.DataSource = SQLDS_ListCurrentRisk
            Case "All Risks Overdue"
                grvHomeRisk.DataSource = SQLDS_ListAllRiskOverdue
            Case "My Risks"
                grvHomeRisk.DataSource = SQLDS_ListMyRisk
            Case "My Risks Overdue"
                grvHomeRisk.DataSource = SQLDS_ListRiskOverdue
            Case "Risks Requested to Score & Re-Score"
                grvHomeRisk.DataSource = SQLDS_ListScores
            Case "Risks Requested to Score"
                grvHomeRisk.DataSource = SQLDS_ListRiskScores
            Case "Risks Requested to Re-Score"
                grvHomeRisk.DataSource = SQLDS_ListRiskReScores
        End Select

            grvHomeRisk.DataBind()

    End Sub

我的网格视图......

<asp:GridView ID="grvHomeRisk" runat="server" AutoGenerateColumns="false"    AllowSorting="true"
    CssClass="GridMain" UseAccessibleHeader="false"
    ForeColor="#333333" GridLines="None" Width="780px" BorderWidth="0px"
    AllowPaging="true" PageSize="5" CellPadding="3" DataKeyNames="IDRISK">
    <Columns>
        <asp:CommandField ButtonType="Image" SelectText="View Risk" ShowSelectButton="True" SelectImageUrl="~/Images/button-select1.png" />
        <asp:BoundField DataField="TXRISKSUMMARY" HeaderText="Risk" ReadOnly="True" />
        <asp:BoundField DataField="TSRISKSTART" HeaderText="Start Date" ReadOnly="True" DataFormatString="{0:dd MMM yyyy}"  />
        <asp:BoundField DataField="TSRISKREVIEW" HeaderText="Review Date" SortExpression="TSRISKREVIEW" ReadOnly="True" DataFormatString="{0:dd MMM yyyy}" />
        <asp:BoundField DataField="TXUSER_NAME_O" HeaderText="Owner" SortExpression="TXUSER_NAME_O" ReadOnly="True" />
        <asp:BoundField DataField="TXDESCRIPTION" HeaderText="Risk Element" SortExpression="TXDESCRIPTION" ReadOnly="True"  />
        <asp:BoundField DataField="TSDATMOD" HeaderText="Date Modified" ReadOnly="True" DataFormatString="{0:dd MMM yyyy}" />
        <asp:BoundField DataField="TXUSER_NAME_M" HeaderText="Modified By" ReadOnly="True" />
                                        </Columns>
                                        <PagerTemplate>
                                            <table>
                                                <tr>
                                                    <td>
                                                        <asp:Button ID="FirstButton" runat="server" CommandArgument="First" CommandName="Page" Text="<<" CssClass="buttongrid" ToolTip="First" OnClientClick="needToConfirm = false;" />
                                                        <asp:Button ID="PrevButton" runat="server" CommandArgument="Prev" CommandName="Page" Text="Previous" CssClass="button" ToolTip="Previous" OnClientClick="needToConfirm = false;" />
                                                    </td>
                                                    <td>
                                                        <asp:Label ID="lblPageCount" runat="server" CssClass="TextA12Bold" Visible="false"></asp:Label>
                                                    </td>
                                                    <td>
                                                        <asp:Button ID="NextButton" runat="server" CommandArgument="Next" CommandName="Page" Text="Next" CssClass="button" ToolTip="Next" OnClientClick="needToConfirm = false;" />
                                                        <asp:Button ID="LastButton" runat="server" CommandArgument="Last" CommandName="Page" Text=">>" CssClass="buttongrid" ToolTip="Last" OnClientClick="needToConfirm = false;" />
                                                    </td>
                                                </tr>
                                            </table>
                                        </PagerTemplate>
                                    </asp:GridView>

0 个答案:

没有答案