[ASP.NET VB] Sorteren wil niet werken

Pagina: 1
Acties:

  • dailyleaf
  • Registratie: December 2004
  • Laatst online: 08-01 19:05
Allo Allemaal,

Ik kom pas net kijken bij het ASP.NET gebeuren.
Bezig zijnde met een aantal tutorials kwam er ook een gedeelte voorbij waarbij ik gegevens kan opvragen uit een database.
En vervolgens kon pagineren en sorteren. Dit alles met het Datagrid control.
Nu heb ik de code wat aan elkaar geplakt en ik kan nu door de pagina's bladeren.
Alleen het sorteren werkt niet.

VB-Code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    Sub Page_Load(Sender As Object, E As EventArgs)
       If Not Page.IsPostBack Then
         BindGrid()
       End If
    End Sub

    Sub BindGrid()
       Dim ConnectionString As String = "server=(local);database=NorthwindCS;trusted_connection=true"
       Dim CommandText As String
       Dim Sortfield As String

        If SortField = String.Empty Then
        CommandText = "SELECT * FROM Products ORDER BY ProductName"
        Else
        CommandText = "SELECT * FROM Products ORDER BY " & SortField
        End If

       Dim myConnection As New SqlConnection(ConnectionString)
       Dim myCommand As New SqlDataAdapter(CommandText, myConnection)

       Dim ds As New DataSet()
       myCommand.Fill(ds)

       DataGrid1.DataSource = ds
       DataGrid1.DataBind()
    End Sub

    Sub DataGrid_Page(Sender As Object, e As DataGridPageChangedEventArgs)
        DataGrid1.CurrentPageIndex = e.NewPageIndex
        BindGrid()
    End Sub

    Sub DataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs)
        DataGrid1.CurrentPageIndex = 0
        Dim SortField = e.SortExpression
        BindGrid()
    End Sub

    Property SortField() As String
  Get
    Dim o As Object = ViewState("SortField")
    If o Is Nothing Then
      Return String.Empty
    End If
    Return CStr(o)
  End Get

  Set(ByVal Value As String)
    ViewState("SortField") = Value
  End Set
End Property


Html Code:
code:
1
2
3
4
5
        <asp:datagrid id="DataGrid1" runat="server" width="80%" CellSpacing="1" GridLines="None" CellPadding="3" BackColor="White" ForeColor="Black" OnPageIndexChanged="DataGrid_Page" PageSize="6" AllowPaging="true" OnSortCommand="DataGrid_Sort" AllowSorting="true">
            <HeaderStyle font-bold="True" forecolor="white" backcolor="#4A3C8C"></HeaderStyle>
            <PagerStyle horizontalalign="Right" backcolor="#C6C3C6" mode="NumericPages"></PagerStyle>
            <ItemStyle backcolor="#DEDFDE"></ItemStyle>
        </asp:datagrid>


Bij de tutorial waar ik mee bezig was behandelden ze steeds kleine stukjes code.
Ik heb alleen geen idee wat waar hoort.
Kan iemand mij helpen dit op orde te krijgen en te zorgen dat ik kan sorteren mbv DataGrid.

Bvd

Mijn post is interessanter dan mijn Sig..


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:18

TeeDee

CQB 241

Als ik het even gauw bekijk, heb je alle benodigde elementen, behalve het sorteer commando zelf.

edit: wat de rest hieronder zegt :)

[ Voor 24% gewijzigd door TeeDee op 22-03-2005 11:01 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 10-05 15:56
In je sorteercommando staat dit:
code:
1
2
3
4
5
    Sub DataGrid_Sort(sender As Object, e As DataGridSortCommandEventArgs)
        DataGrid1.CurrentPageIndex = 0
        Dim SortField = e.SortExpression
        BindGrid()
    End Sub

Maar met de variabele SortField wordt niks gedaan. Deze moet je naar je BindGrid sturen.
code:
1
BindGrid( SortField )

ofzo. In je bindgrid kan daarmee dan je dataview sorteren. Als er niet gesorteerd hoeft te worden kan je null meegeven en daarop controleren of er gesorteerd moet worden of niet.

Zoiets:
code:
1
2
3
4
5
DataView View ds.Tables[ 0 ].DefaultView;
if( SortField != null )
  View.Sort = SortField;

DataGrid1.DataSource = View;

Code klopt niet helemaal, ik ben c# gewend.

[ Voor 17% gewijzigd door sig69 op 22-03-2005 11:02 ]

Roomba E5 te koop


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

In BindGrid Dim je sortfield opnieuw. Die is daar dus altijd leeg. Wat je nu doet als je wilt sorteren:

- een variabele sortfield declareren zonder type en het veld erin zetten waarop je wil sorteren
- BindGrid aanroepen
- in BindGrid een nieuwe variabele sortfield (nu van het type string) aanmaken en daarop checken: die is dus altijd leeg

oplossing:
geef sortfield mee als variabele of maak er een globale variabele van...

My personal website


  • dailyleaf
  • Registratie: December 2004
  • Laatst online: 08-01 19:05
Opgelost,

Dit heb ik weggehaald bij BindGrid()
code:
1
       Dim Sortfield As String


En dit
code:
1
        SortField = e.SortExpression
ipv
code:
1
        Dim SortField = e.SortExpression


Bedankt voor de snelle reacties en het meedenken. TOP!

Mijn post is interessanter dan mijn Sig..