Integer column in GridView is being sorted as a string

1.2k views Asked by At

I have a GridView, which has a column as shown below:

<asp:TemplateField HeaderText="Vendor Path" SortExpression="DocumentTemplateFieldID" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <asp:Label ID="vendor" Height="10px" Width="60px" runat="server" Text='<%# Eval("DocumentTemplateFieldID") %>'> </asp:Label>
    </ItemTemplate>
</asp:TemplateField>

I allow sorting; however, it sorts it as if it were a string. In the database, it is an integer column.

How do I make my GridView accept that I'm really putting integers in there? I tried to convert it and that didn't work.

Code added:

Protected Sub TaskGridView_Sorting(ByVal sender As Object, ByVal e As GridViewSortEventArgs) Handles GridView1.Sorting
    dsData = Session("dataTableView")
    Dim sortExpression As String = e.SortExpression
    Dim direction As String = String.Empty
    If SortDirection = SortDirection.Ascending Then
        SortDirection = SortDirection.Descending
        direction = " DESC"
    Else
        SortDirection = SortDirection.Ascending
        direction = " ASC"
    End If
    Dim table As DataTable = dsData
    table.DefaultView.Sort = sortExpression + direction
    GridView1.DataSource = table
    GridView1.DataBind()
    Session("dataTableView") = table
End Sub
Private Property SortDirection() As SortDirection
    Get
        If Session("sortDir") = Nothing Then
            Session("sortDir") = SortDirection.Ascending
        End If

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

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

End Property

Updated:

Public Function initialQuery(ByVal vendorID As String) As DataTable
    Dim objConn As IDbConnection = Nothing
    Dim dsData As New DataTable
    Dim objParams(0) As IDbDataParameter
    Try
        objConn = DBAccess.GetConnection
        objParams(0) = DBAccess.CreateParameter("DWSVendorID", DbType.String, vendorID, ParameterDirection.Input)
        'Need to figure out how to add the below code:
        If (Not IsNothing(vendorID) And Not vendorID = 0) Then

            '      strBlder.Append("WHERE B.DocumentProviderID = '" + vendorID.ToString + "' ")
        End If
        dsData = DBAccess.ExecuteDataTable(objConn, DataAccessHelper.Schema & "LLC.[DWSMappingToolInitialQuery]", objParams)

    Finally
        If Not objConn Is Nothing Then
            DBAccess.CloseConnection(objConn)
        End If
    End Try
    If dsData.Rows.Count > 0 Then
        Return dsData
    End If

    Return Nothing
End Function
0

There are 0 answers