Gridview'deki sıralama olayı ASP.Net VB kullanma

0

Soru

Gridview'de Sıralama ile ilgili bir sorunum var. Ben bu konuda uzman değilim. vb.net ama bu sorunu çözmek zorundayım. Verilerimin Gridview'e nasıl geldiğini açıklamak istiyorum.

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() bazı adımlardan geçerek sorgu verileri için yüklenecek

//Bu işlev bazı mantık için kullanılır

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

eEmployer gridView için sorgu için tüm verileri alacak

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

son olarak, veriler kılavuz görünümüne geri dönüyor. ama benim sorunum, sıralama olayını nasıl uygulayabileceğimi anlamıyorum. değiştirdim bir şey görünümdür AllowSorting="true" SortExpression="EmployerName" daha ne yapmam gerektiğini de bilmiyorum. Ben aşağıdaki Bu Madde

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

En iyi cevabı

1

Eh, temel kurulum şöyle olabilir:

VE her zaman TÜM web sayfalarınızda ıspost'un arka saplamasına sahip olmayın.

Yani, bu işaretlemeye sahibim:

(Sihirbazı kullandım-veri kaynağı oluştur). Daha sonra veri kaynağı ayarını üflerim ve datasourc1'i web sayfasından silerim.

yani, bu işaretlemeye sahibim:

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

ve yüklenecek kodum şudur: (LoadGrid görünümümün "varsayılan" bir sıralamaya nasıl sahip olduğuna dikkat edin

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

Ve benim sıralama olay saplamam şudur:

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

    LoadGrid(e.SortExpression)

End Sub

Ve sonuçlar şu şekildedir:

enter image description here

Şimdi, elbette, bir kayıt kümesi (DataTable) oluşturmak için bağlantı ve kod yazmak zorunda kalmaktan her zaman yoruluyorum, bu yüzden bu genel yardımcı rutine sahibim:

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

Düzenlemek:

yani ek soru, ASC ve desc'yi sıralamaya ne dersiniz.

Başlığı tekrar tıklarsan sıralamayı tersine çeviririz diye ekleyebiliriz.

bu biraz daha fazla kod alır, ancak bu işe yarayacaktır:

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

Henüz bitirmedim ama çözümün bu olduğunu anlıyorum.
Julker Nien Akib

@ albert-d-kallal güzel kod için teşekkür ederim ve işimi zamanında bitirmeyi başardığım için mutluyum.
Julker Nien Akib

Merhaba kardeşim, bir sorunum var. Bu çözümden, bu yalnızca Desc veya Asc yapar. Bunun arkasındaki mantık ne olacak??
Julker Nien Akib

Tamam, bu daha karmaşık - bu yüzden işleri biraz değiştirirdim. Ancak Düzenlememe bakın-başlığa nasıl tıklayabileceğinizi yayınladım-tekrar tıklarsanız, o sütunun sıralamasını tersine çevirir.
Albert D. Kallal

Cevabınız için teşekkür ederim ama düzenlemeden hemen önce çözdüm ama bu benim için çok şey ifade ediyor ve cevap verdiğine sevindim.
Julker Nien Akib

Diğer dillerde

Bu sayfa diğer dillerde

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