A classificação de eventos na GridView em ASP.Net usando o VB

0

Pergunta

Eu estou tendo um problema em relação a Classificação no Gridview. Eu não sou um expert em vb.net mas eu tenho que resolver esse problema. Eu quero explicar como os meus dados está chegando no 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() vai carregar para a consulta de dados por meio de alguns passos

//Esta função é usada para alguns lógica

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

eEmployer vai ter todos os dados para a consulta para o 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

finalmente, os dados retornar para o modo de exibição de grade. mas o meu problema é que eu não estou entendendo como posso implementar a classificação coisa. mudei alguma coisa é vista de AllowSorting="true" SortExpression="EmployerName" e eu não sei o que devo fazer ainda mais. Eu estava seguindo esse Número

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

Melhor resposta

1

Bem, a configuração básica pode ser como esta:

E ter SEMPRE o Não IsPost volta de stub em TODAS as suas páginas da web.

Então, eu tenho essa marcação:

(Eu usei o assistente criar fonte de dados). Eu, em seguida, EXPLODIR os dados de configuração de fonte e eliminar o DataSourc1 a partir da página web.

então, eu tenho essa marcação:

   <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 meu código para carregar é este: (note como o meu LoadGrid vista tem um "padrão" de classificação

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 o meu tipo de evento de stub é este:

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

    LoadGrid(e.SortExpression)

End Sub

E os resultados são:

enter image description here

Agora, é claro que eu sempre canso de ter que tipo de conexão e o código para criar um conjunto de registos (DataTable), então tenho global auxiliar de rotina:

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

Editar:

assim, a questão é que cerca de classificação ASC e DESC.

Bem, poderíamos acrescentar, se você clique novamente no título, podemos inverter a classificação.

isso leva um pouco mais de código, mas este seria o trabalho:

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 ainda não concluída, mas eu entendo que isso é a solução.
Julker Nien Akib

@albert-d-kallal obrigado pelo bom código e eu estou feliz que eu consegui terminar o meu trabalho no momento.
Julker Nien Akib

Olá, mano, eu estou tendo um problema. A partir desta solução, isto só fazer Desc ou Asc. O que vai ser a lógica por trás disso??
Julker Nien Akib

Ok, isso é mais complexo - que eu seria, assim, mudar um pouco as coisas. Mas ver a minha Edição de eu ter postado como você pode clicar no cabeçalho - se clicar novamente, inverte a classificação para a coluna.
Albert D. Kallal

Obrigado pela sua resposta, mas eu resolvi que antes de você Editar, mas isso significa muito para mim e fico feliz que respondeu.
Julker Nien Akib

Em outros idiomas

Esta página está em outros idiomas

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