Clasificación de eventos en GridView en ASP.Net el uso de VB

0

Pregunta

Estoy teniendo un problema con respecto a la Especie en el Gridview. Yo no soy un experto en vb.net pero tengo que resolver este problema. Quiero explicar cómo mis datos en el 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 carga para la consulta de datos por ir a través de algunos pasos

//Esta función se utiliza para algo de lógica

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

eEmployer obtendrá todos los datos de la consulta para 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, los datos se regresa a la vista de cuadrícula. pero mi problema es que no soy la comprensión de cómo puedo aplicar la clasificación cosa. he cambiado algo la vista AllowSorting="true" SortExpression="EmployerName" y no sé qué debo hacer. Yo estaba siguiendo este Articel

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

Mejor respuesta

1

Así, la configuración básica puede ser como este:

Y tener SIEMPRE la No IsPost espalda auxiliar en TODAS sus páginas web.

Por lo tanto, tengo este formato:

(He utilizado el asistente para crear el origen de datos). Yo, a continuación, apague la fuente de datos de configuración, y eliminar la DataSourc1 de la página web.

por lo tanto, tengo este formato:

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

y mi código para cargar es este: (nota de cómo mi LoadGrid vista tiene un "defecto" ordenar

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

Y mi tipo de evento stub es este:

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

    LoadGrid(e.SortExpression)

End Sub

Y los resultados son estos:

enter image description here

Ahora, por supuesto, siempre me canso de tener que tipo de conexión y el código para crear un conjunto de registros (DataTable), así que tengo este mundial ayudante de rutina:

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:

así que la cuestión es ¿qué acerca de la ordenación de la ASC y DESC.

Así, podríamos añadir si hace clic en el encabezado de nuevo, podemos cambiar el orden.

esto toma un poco más de código, pero esto iba a funcionar:

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

Yo todavía no se ha completado, pero entiendo que esta es la solución.
Julker Nien Akib

@albert-d-kallal gracias por el buen código y me alegro de que me las arreglé para terminar mi trabajo a tiempo.
Julker Nien Akib

Hola, bro, estoy teniendo un problema. A partir de esta solución, esto sólo Desc o Asc. ¿Cuál será la lógica detrás de esto?
Julker Nien Akib

Ok, que es más complejo - me gustaría cambiar un poco las cosas. Pero ver a mi Edit - me han publicado cómo usted puede hacer clic en el título - si hace clic de nuevo, se invierte el orden de esa columna.
Albert D. Kallal

Gracias por tu respuesta, pero lo resuelto justo antes de Editar pero esto significa mucho para mí y me alegra que respondió.
Julker Nien Akib

En otros idiomas

Esta página está en otros idiomas

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