繁体   English   中英

asp.net vb.net gridview-无法排序!

[英]asp.net vb.net gridview - can't sort!

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

真令人沮丧!

我认为您没有在Columns中分配SortExpression属性。 请检查示例以获取更多详细信息。

在您的示例中,只需添加

.SortExpression= col.ColumnName

下面

 .DataField = col.ColumnName

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM