Сортировка после поиска - событие вида gridview1 Сортировка, которая не была обработана - PullRequest
1 голос
/ 21 марта 2019

В основном я недавно добавил окно поиска и кнопку на свой сайт asp.net. Проблема, с которой я столкнулся сейчас, заключается в том, что, несмотря на то, что поиски чисты и все в порядке, у меня возникают проблемы с сортировкой как до запуска любого поиска, так и после него. Я чувствую, что я могу что-то упустить после sda (Fill) .dt, но ничего, что я нашел в Интернете, похоже, не поможет. Не помогает, что его в VB либо Заранее спасибо.

Imports System
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Collections
Imports System.Collections.Generic
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports Microsoft.VisualBasic
Public Class ShowPOsAdmin
    Inherits System.Web.UI.Page
    Dim strConn As String = ConfigurationManager.ConnectionStrings("PurchaseOrderConnectionString").ConnectionString
    Dim Connection As SqlConnection = New SqlConnection(strConn)
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Me.IsPostBack Then
            Me.SearchVen()
        End If
    End Sub
    Private Sub SearchVen()
        Dim Constr As String = ConfigurationManager.ConnectionStrings("PurchaseOrderConnectionString").ConnectionString
        Using Con As New SqlConnection(Constr)
            Using cmd As New SqlCommand
                Dim searchword As String = "SELECT PurchaseOrder.PoId, PurchaseOrder.Vendor_Name, PurchaseOrder.POAmount,PurchaseOrder.DateFrom, PurchaseOrder.DateTo, PurchaseOrder.Balance, PurchaseOrder.CodeId, PurchaseOrder.PoNumber, BPNumber, ClassCode.CodeId AS Expr1, ClassCode.CodeDefinition, PurchaseOrder.Notes FROM PurchaseOrder INNER JOIN ClassCode ON PurchaseOrder.CodeId = ClassCode.CodeId"
                If Not String.IsNullOrEmpty(TextBox11.Text.Trim()) Then
                    searchword += " Where PurchaseOrder.PONumber Like @POnumber + '%'"
                    cmd.Parameters.AddWithValue("PONumber", TextBox11.Text.Trim())
                End If
                cmd.CommandText = searchword
                cmd.Connection = Connection
                Using sda As New SqlDataAdapter(cmd)
                    Dim dt As New DataTable()
                    sda.Fill(dt)
                    dt.DefaultView.Sort = "Vendor_Name ASC"
                    GridView1.DataSourceID = ""
                    GridView1.DataSource = dt
                    GridView1.DataBind()
                    ViewState("dt") = dt
                End Using
            End Using
        End Using
    End Sub
    Private Sub DetailsView1_ItemDeleted(sender As Object, e As DetailsViewDeletedEventArgs) Handles DetailsView1.ItemDeleted
        GridView1.DataBind()
        Me.SearchVen()
    End Sub

    Private Sub DetailsView1_ItemInserted(sender As Object, e As DetailsViewInsertedEventArgs) Handles DetailsView1.ItemInserted
        GridView1.DataBind()
        Me.SearchVen()
    End Sub
    Private Sub DetailsView1_ItemUpdated(sender As Object, e As DetailsViewUpdatedEventArgs) Handles DetailsView1.ItemUpdated
        GridView1.DataBind()
        Me.SearchVen()
    End Sub
    Private Sub GridView1_PageIndexChanging(sender As Object, e As GridViewPageEventArgs) Handles GridView1.PageIndexChanging
        GridView1.PageIndex = e.NewPageIndex
        Me.SearchVen()
    End Sub
    Protected Sub TextBox11_TextChanged(sender As Object, e As EventArgs) Handles TextBox11.TextChanged
        Me.SearchVen()
    End Sub
    Protected Sub DetailsView1_PageIndexChanging(sender As Object, e As DetailsViewPageEventArgs) Handles DetailsView1.PageIndexChanging
    End Sub
End Class

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

enter image description here

При нажатии Vendor_Name следует сортировать по первому или последнему в столбце.Проблема в том, что из-за поиска он этого не делает.В тот момент, когда вы щелкаете один из заголовков, таких как «Имя поставщика» или «Дата», вы получаете это сообщение об ошибке.

0 голосов
/ 22 марта 2019

Это может вам помочь.

Хитрость заключается в том, чтобы никогда не полагаться на порядок записей в DataTable.Используйте DataView для DataTable, а затем привяжите к DataView.

Imports System.Data.SqlClient
Imports System.Data

Partial Class PageInitTest
    Inherits System.Web.UI.Page

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

        If Not IsPostBack Then

            Dim conn As New SqlConnection("myconnectionstring")
            Dim command As New SqlCommand("mySQL", conn)
            Dim da As New SqlDataAdapter(command)
            Dim tblData As New DataTable
            da.Fill(tblData)

            ' now the sorting
            Dim dv As New DataView(tblData)

            ' you can also do filtering to not show all of them
            'dv.RowFilter = "MyField = 1"

            dv.Sort = "MyField ASC"    ' ASC or DESC

            ' then bind the control to the DataView, not the DataTable
            dgdMyData.DataSource = dv
            dgdMyData.DataBind()

            conn.Close()

        End If

    End Sub

End Class

Пример в ссылке:

https://forums.asp.net/t/1063235.aspx?Table+Adapter+problem+with+sort+order

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...