asp.net vb.net gridview-can';不行!

asp.net vb.net gridview-can';不行!,asp.net,vb.net,gridview,sorting,Asp.net,Vb.net,Gridview,Sorting,我试图使这个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("Conne

我试图使这个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()

真令人沮丧

由于要手动添加列,因此必须为每个列设置
SortExpression
属性。请参阅最后一个注释。

由于您是手动添加列,因此必须为每个列设置
SortExpression
属性。请参阅最后一个注释。

我认为您没有在列中指定属性。 请查看示例以了解更多详细信息

在您的示例中,只需添加

.SortExpression= col.ColumnName
下面


我认为您没有在列中指定属性。 请查看示例以了解更多详细信息

在您的示例中,只需添加

.SortExpression= col.ColumnName
下面