Sortare eveniment în GridView în ASP.Net folosind VB

0

Problema

Am o problemă în ceea ce privește Fel în Gridview. Eu nu sunt un expert în vb.net dar trebuie să rezolve această problemă. Vreau să explic modul meu de date este de a veni în 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() se va încărca de date de interogare de a merge prin unele măsuri

//Această funcție este utilizată pentru o anumită logică

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

eEmployer va primi toate datele pentru interogare pentru 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

în cele din urmă, datele se întoarce în vedere grilă. dar problema mea este ca eu nu am înțelege cum pot pune în aplicare sortare lucru. am schimbat ceva de vedere AllowSorting="true" SortExpression="EmployerName" și nu știu ce ar trebui să fac în continuare. Am fost în urma acestei Articel

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

Cel mai bun răspuns

1

Ei bine, configurare de bază pot fi ca aceasta:

ȘI au ÎNTOTDEAUNA Nu IsPost înapoi stub în TOATE paginile dvs. de web.

Deci, am această marcare:

(Am folosit wizard - creare sursă de date). Apoi am stinge sursa de date setare, și șterge DataSourc1 de pe pagina web.

deci, am această marcare:

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

și codul meu pentru a încărca este aceasta: (notă modul meu LoadGrid vedere are un "default" un fel

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

Fel de eveniment stub este aceasta:

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

    LoadGrid(e.SortExpression)

End Sub

Iar rezultatele sunt astea:

enter image description here

Acum, desigur, întotdeauna am obține obosit de a avea pentru tipul de conexiune și cod pentru a crea un set de discuri (DataTable), deci am acest globală helper de rutină:

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:

deci, întrebarea suplimentară este despre ce fel ASC și DESC.

Ei bine, am putea adăuga, dacă faceți clic din nou pe antetul, am inversa fel.

acest lucru are un pic mai mult cod, dar acest lucru ar funcționa:

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

Eu încă nu a fost finalizată, dar înțeleg că asta este soluția.
Julker Nien Akib

@albert-d-kallal multumesc pentru cod frumos și mă bucur că am reușit să-mi termin treaba la timp.
Julker Nien Akib

Bună ziua, frate, am o problemă. Din această soluție, acest lucru face doar Asc sau Desc. Ce va fi logica din spatele acestei??
Julker Nien Akib

Ok, care este mult mai complexă - am, prin urmare, ar schimba un pic lucrurile. Dar mi văd Edit - am postat cum ai putea faceți clic pe titlul - dacă faceți clic din nou, se inversează la fel pentru acea coloană.
Albert D. Kallal

Multumesc pentru raspuns dar am rezolvat-o doar înainte de a Edita, dar acest lucru înseamnă mult pentru mine și mă bucur că a răspuns.
Julker Nien Akib

În alte limbi

Această pagină este în alte limbi

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