gpt4 book ai didi

asp.net - Gridview 在列标题中排序向上/向下箭头

转载 作者:行者123 更新时间:2023-12-01 22:20:13 25 4
gpt4 key购买 nike

我目前正在编写一些代码,负责在 GridView 中对数据进行排序和分页。我现在尝试实现排序箭头(列标题旁边的向上/向下箭头),但没有成功。实现排序箭头的代码位于 *GridView1_RowCreated* 子例程中。现在,当我运行代码时,我根本看不到排序箭头。有问题的行是以下一行:“If tblAdministrators.SortExpression = lnk.CommandArgument then”我无法弄清楚该行有什么问题。它总是False,因此箭头不会显示。

Private Function GetData(sort As SortDirection) As Data.DataView

Dim connection As OracleDBConnect = DAL.GetOracleDBConnection()
Dim request As OracleDBRequest = Nothing
Dim result As OracleDBResult = Nothing
Dim trace As OracleDBChronoTrace = Nothing
Dim status As DBStatus
Dim sb As New StringBuilder
Dim dv As DataView

With sb
.Append("SELECT * FROM USERS")
End With

request = New OracleDBRequest(sb.ToString, CommandType.Text)

status = connection.Execute(request, result, trace)

dv = New DataView(result.DataSet.Tables(0))

If (ViewState("sortExp") IsNot Nothing) Then
dv = New Data.DataView(result.DataSet.Tables(0))

If (GridViewSortDirection = SortDirection.Ascending) Then
GridViewSortDirection = SortDirection.Descending
dv.Sort = CType(ViewState("sortExp").ToString() & DESCENDING, String)
Else
GridViewSortDirection = SortDirection.Ascending
dv.Sort = CType(ViewState("sortExp").ToString() & ASCENDING, String)
End If
Else
dv = result.DataSet.Tables(0).DefaultView
End If

Return dv

End Function


Public Property GridViewSortDirection() As SortDirection
Get
If ViewState("sortDir") Is Nothing Then
ViewState("sortDir") = SortDirection.Ascending
End If

Return CType(ViewState("sortDir"), SortDirection)
End Get

Set(ByVal value As SortDirection)
ViewState("sortDir") = value
End Set

End Property


Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles tblAdministrators.PageIndexChanging

tblAdministrators.PageIndex = e.NewPageIndex
GridViewSortDirection = If(GridViewSortDirection = SortDirection.Descending, SortDirection.Ascending, SortDirection.Descending)
tblAdministrators.DataSource = GetData(GridViewSortDirection)
tblAdministrators.DataBind()

End Sub


Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles tblAdministrators.Sorting

ViewState("sortExp") = e.SortExpression
tblAdministrators.DataSource = GetData(GridViewSortDirection)
tblAdministrators.DataBind()

End Sub

Protected Sub GridView1_RowCreated(sender As Object, e As GridViewRowEventArgs) Handles tblAdministrators.RowCreated
If e.Row.RowType = DataControlRowType.Header Then
For Each tc As TableCell In e.Row.Cells
If tc.HasControls() Then

Dim lnk As LinkButton = DirectCast(tc.Controls(0), LinkButton)
If lnk IsNot Nothing Then

Dim img As New System.Web.UI.WebControls.Image()

img.ImageUrl = "/images/" & (If(GridViewSortDirection = SortDirection.Ascending, "asc", "desc")) & ".gif"

If tblAdministrators.SortExpression = lnk.CommandArgument Then

tc.Controls.Add(New LiteralControl(" "))
tc.Controls.Add(img)

End If
End If
End If
Next
End If
End Sub

ASPX 代码:

 <asp:GridView ID="tblAdministrators" runat="server" AutoGenerateColumns="false" EmptyDataText="No records found" PageSize="25" AllowPaging="True" AllowSorting="True" OnRowCreated="GridView1_RowCreated">
<Columns>
<asp:BoundField HeaderText="Name" DataField="Name" SortExpression="NAME"></asp:BoundField>
</Columns>
<Columns>
<asp:BoundField HeaderText="City" DataField="City" SortExpression="CITY"></asp:BoundField>
</Columns>
</asp:GridView>

最佳答案

看看我的示例:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="CustomerId"
DataSourceID="SqlDataSource1">
<SortedAscendingHeaderStyle CssClass="sortasc" />
<SortedDescendingHeaderStyle CssClass="sortdesc" />
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:BoundField DataField="CustomerId" HeaderText="CustomerId"
InsertVisible="False" ReadOnly="True" SortExpression="CustomerId" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="IdNumber" HeaderText="IdNumber"
SortExpression="IdNumber" />
</Columns>
</asp:GridView>

注意 SortedAscendingHeaderStyle 和 SortedDescendingHeaderStyle。只需创建带有背景图像的适当 css 类(向上箭头和向下箭头)即可完成。

关于asp.net - Gridview 在列标题中排序向上/向下箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com