Solved

Where to Call Sorting and Paging methods From with asp:Gridview

Posted on 2007-11-30
1
293 Views
Last Modified: 2013-11-26
Im using the following code in my BindData() function:
I just need to know where I can call my Sorting and Paging methods from with this code:
Maybe Im not understanding this correctly, but, I start off with a DataReader and unload it to a DataTable but then I have to convert to a DataView to Sort the table.
Is there any way around this if Im using an SqlDataSource entirely through code?
I have a rowfilter I want to apply to my dataset but I dont know where before I rebind the gridview.
Thanks
John
Sub BindData(ByVal GetFresh As Boolean, Optional ByVal TextSearch As Boolean = False, Optional ByVal Pageindexchange As Boolean = False)

            Try

                If GetFresh = True And TextSearch = False Then

                    strFilter = "All"

                End If

                Dim myConn2 As SqlConnection = New SqlConnection(ConfigurationManager.AppSettings("connectionString").ToString())

                Dim myComm2 As SqlCommand = New SqlCommand()

                myComm2.Connection = myConn2

                strId = Me.ddlLocation.SelectedValue

                If strId = 0 Or strId = "" Then

                    myComm2.CommandText = "SelectClients"

                Else

                    myComm2.CommandText = "SelectClientsByLocation"

                End If

                myComm2.CommandType = CommandType.StoredProcedure

                myConn2.Open()

                rdr2 = myComm2.ExecuteReader()

                'change datasource from datareader to datatable

                Dim DT As New DataTable()

                'Load Data from Data Reader to DataTable object

                DT.Load(rdr2)

                lblCount.Text = DT.Rows.Count

                lblSort.Text = GridViewSortDirection

                dataTableRowCount = DT.Rows.Count
 

                If dataTableRowCount > 0 Then

                    gvAddress.DataSource = DT

                    gvAddress.DataBind()

                End If
 

                'Dim ds1 As DataSet = Nothing

                Dim nDT As DataView

                'ds1 = convertDataReaderToDataSet(rdr2)

                'nDT = ds1.Tables(0).DefaultView
 

                nDT = SortDataTable(DT, Pageindexchange)

                lblDir.Text = nDT.Sort
 

                If strId = CStr(0) Or strId = "" Then  ' 0 for all locations

                    If strFilter = "All" Then

                        nDT.RowFilter = String.Empty

                    Else

                        nDT.RowFilter = "ContactLastName LIKE '" & Trim(strFilter) & "%' "

                    End If

                Else

                    If strFilter = "All" Then

                        nDT.RowFilter = "LocationID=" & Trim(strId)

                    Else

                        nDT.RowFilter = "ContactLastName LIKE '" & Trim(strFilter) & "%'  and LocationID=" & Trim(strId)

                    End If

                End If

--------------------------------------------------

--generic sorting and paging routines:

        Protected Function SortDataTable(ByVal dataTable As DataTable, ByVal isPageIndexChanging As Boolean) As DataView

            If Not dataTable Is Nothing Then
 

                Dim dataView As DataView = New DataView(dataTable)

                If GridViewSortExpression <> String.Empty Then

                    If isPageIndexChanging Then

                        'dataView.Sort = String.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection)

                        dataView.Sort = GridViewSortExpression + " " + GridViewSortDirection

                    Else

                        dataView.Sort = GridViewSortExpression + " " + GetSortDirection()
 

                        'dataView.Sort = String.Format("{0} {1}", GridViewSortExpression, GetSortDirection())

                    End If

                End If

                Return dataView

            Else

                Return New DataView()

            End If

        End Function

---------------------------------------------------

        Private Function GetSortDirection() As String

            Select Case GridViewSortDirection

                Case "ASC"

                    GridViewSortDirection = "DESC"

                Case "DESC"

                    GridViewSortDirection = "ASC"

            End Select

            Return GridViewSortDirection

        End Function
 

        Private Property GridViewSortDirection() As String

            Get

                Return IIf(ViewState("SortDirection") = Nothing, "ASC", ViewState("SortDirection"))

            End Get

            Set(ByVal value As String)

                ViewState("SortDirection") = value

            End Set

        End Property
 

        Private Property GridViewSortExpression() As String

            Get

                Return IIf(ViewState("SortExpression") = Nothing, String.Empty, ViewState("SortExpression"))

            End Get

            Set(ByVal value As String)

                ViewState("SortExpression") = value

            End Set

        End Property

Open in new window

0
Comment
Question by:jtrapat1
1 Comment
 
LVL 10

Accepted Solution

by:
Alpesh Patel earned 250 total points
ID: 20384844
Yes you can use that

now regarding sorting and paging its long to solve your code. but i can give u solutions which u can apply for your problem

your VB page has this scenario

protected sub grid_DataBind(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles grd.PageIndexChanging

bind your data here with either way no matter wheather it is with Datareader or with SqlDatasource

end sub

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

        grd.PageIndex = e.NewPageIndex
apply databinding here
    End Sub




 Protected Sub grd_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles grd.Sorting
apply DataBinding here with  column name   e.SortExpression.ToString
End Sub




Your ASPX page has this scenario

1.  make your grid attrribute for paging= true and for sorting=true
2. for each column set attribute SortExpression='YourColumnName'

thats it
it would definetly work
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now