Triedenie udalostí v GridView v ASP.Net pomocou VB

0

Otázka

Mám problém, pokiaľ ide Zoradenie v Gridview. Nie som odborník v vb.net ale musím vyriešiť tento problém. Chcem vysvetliť, ako sa moje údaje prichádza v 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() načíta sa na dotaz údajov prechádzajú niektoré kroky

//Táto funkcia sa používa pre niektoré logika

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

eEmployer bude mať všetky údaje na dotaz pre 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

napokon, dáta sa vracia do mriežke. ale môj problém je, že nie som pochopiť, ako môžem vykonávať triedenie vec. zmenil som niečo, čo je zobrazenie AllowSorting="true" SortExpression="EmployerName" a ja neviem, čo by som mal robiť ďalej. Bol som po tejto Articel

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

Najlepšiu odpoveď

1

Dobre, základné nastavenie môže byť, ako je tento:

A VŽDY mať Nie IsPost späť čapu vo VŠETKÝCH vašich webových stránok.

Tak som to markup:

(Použil som sprievodcu - vytvoriť zdroj údajov). Potom som sa SFÚKNUŤ zdroj údajov nastavenie a odstrániť DataSourc1 z webovej stránky.

tak som to markup:

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

a môj kód zaťaženie je toto: (všimnite si, ako môj LoadGrid zobraziť má "default" sort

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

A môj druh podujatia čapu je toto:

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

    LoadGrid(e.SortExpression)

End Sub

A výsledky sú to:

enter image description here

Teraz, samozrejme, vždy som unavený z toho, typ spojenia alebo kód, ak chcete vytvoriť záznam nastaviť (DataTable), tak som si tento globálny helper rutinné:

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

Úprava:

takže ďalšie otázkou je, čo o zoradiť ASC a DESC.

No, mohli by sme pridať ak kliknete na položky opäť obrátime druhu.

to trvá trochu väčší kód, ale to by pracovať:

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

Ja zatiaľ nie je dokončená, ale chápem to je riešenie.
Julker Nien Akib

@albert-d-kallal ďakujem za pekné kód a som rád, že sa mi podarilo dokončiť svoju prácu na čas.
Julker Nien Akib

Dobrý deň, brácho, mám jeden problém. Z tejto riešenie, to len urobiť, Desc alebo Asc. Čo bude logikou to??
Julker Nien Akib

Ok, to je zložitejšie, - by som sa teda zmeniť veci trochu. Ale pozri moje Upraviť - som zverejnil, ako by ste mohli kliknite na položky - ak chcete, kliknite na tlačidlo znova, to zruší zoradiť pre daný stĺpec.
Albert D. Kallal

Ďakujem za odpoveď, ale ja som na to prišla tesne predtým, ako si Upraviť, ale to znamená veľa pre mňa a som rád, že odpovedal.
Julker Nien Akib

V iných jazykoch

Táto stránka je v iných jazykoch

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