Tri événement dans GridView dans ASP.Net à l'aide de VB

0

La question

J'ai un problème concernant les Trier dans un Gridview. Je ne suis pas un expert en vb.net mais je dois résoudre ce problème. Je veux expliquer comment mes données sont à venir dans GridView.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
//also there is some logic in there but I think that part of the code will not effect
  loadgrid()
End Sub

loadgrid() charge pour les données de la requête en passant par certaines étapes

//Cette fonction est utilisée pour un peu de logique

Private Sub loadgrid() Handles B_SEARCH.Click, chkLegacy.CheckedChanged, gvEmployer.PageIndexChanged
        GridDataLoader() 
    End Sub

eEmployer obtenez toutes les données de la requête pour gridView

Public Sub GridDataLoader()
       //some code was there because of searching
        Dim dataTable = Employer.getEmployers(eEmployer, chkLegacy.Checked)
        gvEmployer.DataBind()
    End Sub
Public Function GetEmployers(ByVal eEmployer As tblEmployer, ByVal All As Boolean, Optional ByVal sortExpression As String = Nothing) As DataTable
        Dim query = ""
        query =
                "select employer.EmployerID as EmployerId,
                employer.Employer_Name as EmployerName,
           // the query is so large so i delete all for better understanding
                on (employer.Modified_by=tum.UserID)
                where employer.LegacyID IS NULL  and address.ValidityTo is null"
        'End If

        Dim params = ""
        If All = False Then
            query += " AND employer.ValidityTo is null"
        End If

        If (params.Trim() IsNot "") Then
            query = query & params
        End If
        data.setSQLCommand(query, CommandType.Text)
        Return data.Filldata
    End Function

enfin, les données sont de retour dans la vue grille. mais mon problème est que je ne suis pas à comprendre comment puis-je mettre en œuvre le tri chose. j'ai changé quelque chose est en vue AllowSorting="true" SortExpression="EmployerName" et je ne sais pas ce que je dois faire plus. J'ai été la suite de cette Article

asp.net gridview vb.net
2021-11-20 04:46:50
1

La meilleure réponse

1

Ainsi, la configuration de base peut être comme ceci:

ET TOUJOURS le Pas IsPost arrière talon dans TOUTES les pages de votre site web.

Donc, j'ai cette balise:

(J'ai utilisé l'assistant créer une source de données). Je puis faire SAUTER la configuration de source de données, et de supprimer le DataSourc1 partir de la page web.

donc, j'ai cette balise:

   <div style="width:40%;padding:25px">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ID" CssClass="table table-hover" AllowSorting="True" >
            <Columns>
                <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" />
                <asp:BoundField DataField="HotelName" HeaderText="HotelName" SortExpression="HotelName" />
                <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" />
                <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
            </Columns>
        </asp:GridView>
        <br />
    </div>

et mon code à charger est ceci: (notez mon LoadGrid point de vue a un tri "par défaut"

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        LoadGrid
    End If
End Sub

Sub LoadGrid(Optional strSort = "HotelName")

    GridView1.DataSource = MyRst("SELECT * FROM tblHotels Order by " & strSort)
    GridView1.DataBind()

End Sub

Et mon tri événement stub est ceci:

Protected Sub GridView1_Sorting(sender As Object, e As GridViewSortEventArgs) Handles GridView1.Sorting

    LoadGrid(e.SortExpression)

End Sub

Et les résultats sont à ceci:

enter image description here

Maintenant, bien sûr, j'ai toujours fatigué d'avoir à type de connexion et le code pour créer un jeu d'enregistrements (DataTable), j'ai donc cette assistance global de routine:

Public Function MyRst(strSQL As String) As DataTable

    Dim rstData As New DataTable
    Using conn As New SqlConnection(My.Settings.TEST4)
        Using cmdSQL As New SqlCommand(strSQL, conn)
            conn.Open()
            rstData.Load(cmdSQL.ExecuteReader)
        End Using
    End Using

    Return rstData
End Function

Edit:

donc la question est ce que sur le tri ASC et DESC.

Eh bien, nous pourrions ajouter, si vous cliquez sur l'en-tête de nouveau, nous inverser le tri.

cela prend un peu plus de code, mais cela devrait fonctionner:

Sub LoadGrid(Optional strSort As String = "HotelName",
             Optional SortASC As Boolean = True)

    Dim rstTable As DataTable
    rstTable = MyRst("SELECT * FROM tblHotels")
    rstTable.DefaultView.Sort = strSort & " " & If(SortASC, "ASC", "DESC")
    GridView1.DataSource = rstTable
    GridView1.DataBind()

    ViewState("Sort") = strSort
    ViewState("SortASC") = SortASC
End Sub

Protected Sub GridView1_Sorting(sender As Object, e As GridViewSortEventArgs) Handles GridView1.Sorting

    If ViewState("Sort") = e.SortExpression Then
        ViewState("SortASC") = Not ViewState("SortASC")
    Else
        ViewState("SortASC") = True
    End If
    LoadGrid(e.SortExpression, ViewState("SortASC"))

End Sub
2021-11-21 08:56:42

J'ai pas encore achevé, mais je comprends que c'est la solution.
Julker Nien Akib

@albert-d-kallal merci pour le bon code et je suis heureux que j'ai réussi à finir mon travail à temps.
Julker Nien Akib

Bonjour, bro, je vais avoir un problème. À partir de cette solution, ce que ne Desc ou Asc. Ce sera la logique derrière cela??
Julker Nien Akib

Ok, c'est plus complexe je voudrais donc changer un peu les choses. Mais voir mon Edit - j'ai posté la façon dont vous pouvez cliquer sur l'en-tête - si vous cliquez de nouveau, il inverse le tri pour la colonne.
Albert D. Kallal

Merci pour votre réponse, mais je l'ai résolu juste avant de le Modifier, mais cela signifie beaucoup pour moi et content que a répondu.
Julker Nien Akib

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................