【问题标题】:asp.net vb.net gridview - can't sort!asp.net vb.net gridview - 无法排序!
【发布时间】:2009-10-02 15:18:43
【问题描述】:

我试图让这个 gridview 可排序,但它根本不起作用,有人知道为什么吗?

    Dim sql As String = "SELECT Product_ID, Code, Trade_Name "
    sql = sql & "FROM Product "
    sql = sql & "WHERE Category = ? "
    Dim conn As String = WebConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
    Dim dad As New OleDbDataAdapter(sql, conn)
    dad.SelectCommand.Parameters.AddWithValue("?", CatID)
    Dim dtblProduct As New DataTable()
    dad.Fill(dtblProduct)

    Dim grdProducts As New GridView
    grdProducts.ID = "grdProducts"
    grdProducts.CellPadding = 5
    grdProducts.CellSpacing = 5
    grdProducts.GridLines = GridLines.None
    grdProducts.AutoGenerateColumns = False
    grdProducts.HeaderStyle.HorizontalAlign = HorizontalAlign.Left
    grdProducts.EmptyDataText = "No Products Available."
    grdProducts.DataSource = dtblProduct
    Dim dataNavigateUrlFields() As String = {"Product_ID"}

    Dim blnfirstCol As Boolean = True

    Dim strPageResolveURL As String = String.Empty
    Dim strLnkSelectText As String = String.Empty

    For Each col As Data.DataColumn In dtblProduct.Columns
        If blnfirstCol Then
                    Dim lnkSelect As New HyperLinkField
                    With lnkSelect
                        .Text = _strAction
                        .DataNavigateUrlFields = dataNavigateUrlFields
                        .DataNavigateUrlFormatString = Page.ResolveUrl(_strDirectPage & ".aspx?ProductID={0}&Cat=" & CatID)
                    End With
                    grdProducts.Columns.Add(lnkSelect)
            blnfirstCol = False
        Else
            Dim myBoundField As New BoundField()
            With myBoundField
            Select Case col.ColumnName
                Case "CODE"
                    .HeaderText = "Code"
                    .ItemStyle.Width = 100
                    .HtmlEncode = False
                Case "TRADE_NAME"
                    .HeaderText = "Trade Name"
                    .ItemStyle.Width = 200
            End Select
            .DataField = col.ColumnName
            .Visible = True
            End With
            grdProducts.Columns.Add(myBoundField)
        End If
    Next

    grdProducts.AllowSorting = True ' Should already be true, but this doesnt help
    grdProducts.DataBind()

这很令人沮丧!

【问题讨论】:

    标签: asp.net vb.net gridview sorting


    【解决方案1】:

    我认为您没有在 Columns 中分配 SortExpression 属性。 详情请查看this 示例。

    在您的示例中,只需添加

    .SortExpression= col.ColumnName
    

    下面

     .DataField = col.ColumnName
    

    【讨论】:

      【解决方案2】:

      由于您是手动添加列,因此您必须为每个列设置SortExpression 属性。见最后注here

      【讨论】:

        猜你喜欢
        • 2016-09-10
        • 2023-03-12
        • 1970-01-01
        • 2016-07-31
        • 2017-03-28
        • 2018-09-20
        • 1970-01-01
        • 2016-11-18
        • 2011-09-02
        相关资源
        最近更新 更多