L'ordinamento evento in GridView in ASP.Net utilizzando VB

0

Domanda

Sto avendo un problema per quanto riguarda l'Ordinamento nella Gridview. Io non sono un esperto in vb.net ma devo risolvere questo problema. Voglio spiegare come la mia data è venuta in 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() sarà carico per la query di dati attraverso alcuni passaggi

//Questa funzione viene utilizzata per un po ' di logica

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

eEmployer avere tutti i dati per la query per 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

infine, i dati di tornare in vista griglia. ma il mio problema è che non ho la comprensione di come posso implementare l'ordinamento cosa. ho cambiato qualcosa è vista AllowSorting="true" SortExpression="EmployerName" e non so cosa devo fare di più. Stavo seguendo questo Articolo

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

Migliore risposta

1

Beh, la configurazione di base può essere come questo:

E SEMPRE la Non IsPost indietro stub in TUTTE le pagine web.

Così, ho questo codice:

(Io ho usato la procedura guidata crea origine dati). Ho poi SOFFIARE FUORI l'origine dei dati di impostazione, ed eliminare il DataSourc1 dalla pagina web.

così, ho questo codice:

   <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>

e il mio codice per caricare è questo: (si noti come il mio LoadGrid vista ha un "default" ordinamento

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

E la mia sorta di evento stub è questo:

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

    LoadGrid(e.SortExpression)

End Sub

E i risultati sono questi:

enter image description here

Ora, naturalmente, ho sempre stanca di avere a che tipo di connessione e il codice per creare un set di record (DataTable), quindi ho globale di questa routine di supporto:

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:

quindi la domanda è che cosa circa l'ordinamento ASC e DESC.

Beh, potremmo aggiungere, se si fare clic sull'intestazione di nuovo, possiamo invertire l'ordine.

questo richiede un po ' più di codice, ma questo dovrebbe funzionare:

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

Io ancora non completato, ma capisco che questa è la soluzione.
Julker Nien Akib

@albert-d-kallal grazie per la bella codice e sono contento che sono riuscito a finire il lavoro in tempo.
Julker Nien Akib

Ciao, fratello, sto avendo un problema. Da questa soluzione, si tratta solo di fare Desc o Asc. Quale sarà la logica dietro???
Julker Nien Akib

Ok, che è più complesso - vorrei quindi cambiare un po ' le cose. Ma vedere la mia Modifica che ho postato come si potrebbe fare clic sull'intestazione - se si fa clic su di nuovo, inverte l'ordinamento per colonna.
Albert D. Kallal

Ti ringrazio per la risposta ma ho risolto poco prima si Modifica, ma questo per me significa molto contento che abbia risposto.
Julker Nien Akib

In altre lingue

Questa pagina è in altre lingue

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