Třídění událostí v GridView v ASP.Net pomocí VB

0

Otázka

Mám problém ohledně Druhu v Gridview. Nejsem odborník v vb.net ale musím vyřešit tento problém. Chci vysvětlit, jak se moje data přichází 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() bude zatížení pro dotaz na data tím, že jde přes některé kroky

//Tato funkce se používá pro nějakou logiku

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

eEmployer bude mít všechny údaje pro dotaz pro 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

konečně, data se vrátí do zobrazení mřížky. ale můj problém je, že jsem nechápal, jak mohu implementovat třídění věc. změnil jsem něco, co je zobrazit AllowSorting="true" SortExpression="EmployerName" a já nevím, co mám dělat dále. Byl jsem po tomto Articel

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

Nejlepší odpověď

1

No, základní nastavení může být takhle:

A VŽDY Není IsPost zpět stub ve VŠECH vašich webových stránek.

Takže, mám tyto značky:

(Použil jsem průvodce - vytvořit zdroj dat). Pak jsem se SFOUKNOUT zdroj dat nastavení, a odstranit DataSourc1 z webové stránky.

takže, mám tyto značky:

   <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 načíst, je toto: (všimněte si, jak můj LoadGrid pohledu má "default" druh

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 typ události stub je toto:

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

    LoadGrid(e.SortExpression)

End Sub

A výsledky jsou tyto:

enter image description here

Teď samozřejmě jsem vždycky unavený, že bude muset typ připojení a kód vytvořit rekord (DataTable), tak mám tento globální pomocník 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

Edit:

takže další otázka je, co o třídění ASC a DESC.

No, mohli bychom přidat, pokud kliknete na nadpis opět jsme obráceném řazení.

to trvá trochu více kódu, ale to bude fungovat:

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á ještě není dokončen, ale chápu, že je to řešení.
Julker Nien Akib

@albert-d-kallal děkuji za pěkný kód a jsem rád, že se mi podařilo dokončit svou práci včas.
Julker Nien Akib

Ahoj, brácho, mám jeden problém. Z tohoto řešení, to jen udělat, Desc nebo Asc. Co bude logika za tím je??
Julker Nien Akib

Ok, to je složitější - proto bych změnit věci trochu. Ale viz můj Edit - jsem vyslán, jak můžete, klikněte na nadpis - pokud klepnete na tlačítko znovu, obrátí řazení pro sloupec.
Albert D. Kallal

Děkuji vám za odpověď, ale vyřešil jsem to těsně předtím, než budete Upravovat, ale to pro mě hodně znamená a jsem rád, že odpověděl.
Julker Nien Akib

V jiných jazycích

Tato stránka je v jiných jazycích

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