ASP.NetとVB.Netで、GridViewのデータを昇順または降順で並べ替えることができるサイトを開発しています。文字列「DESC」から「Double」の型への変換が無効です
レコードはSQL Server Expressデータベースからのものです。
私は、データをソートする列の見出しをクリックして行くと、私は次のエラーを取得する:ダブルを
「と入力する文字列から変換 『DESC』 『は』は有効ではありません。」以下は
私はソートに使用していますコードです:
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
Dim sqlConn As New SqlConnection
Dim sqlCmd As New SqlClient.SqlCommand
Dim sqlReader As SqlDataReader
'If no values are supplied in the textbox, throw an error message.
If TextBox2.Text = "" Then
MsgBox("A centre code needs to be provided...")
End If
If TextBox2.Text <> "" Then
'Telling the system the location of the database.
sqlConn.ConnectionString = "server=servername;Initial Catalog=dbName;Trusted_Connection=yes"
'Here we are opening the connection to the database.
sqlConn.Open()
'This is to say that sqlCmd is a stored procedure.
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure
'This is creating the command to execute the stored procedure based on the information given in the connection string.
sqlCmd = sqlConn.CreateCommand
'The command is triggered to execute the stored procedure which grabs all information for the specific centre.
sqlCmd.CommandText = "exec GetAllInformationKCSEBoxes '" & TextBox2.Text & "' "
'This will read the rows in the database.
sqlReader = sqlCmd.ExecuteReader()
GridView2.Columns.Clear() 'If there are rows of data that match are criteria
If (sqlReader.HasRows) Then
'The rows of data are grabbed for the specific centre from the database using the data reader.
GridView2.DataSource = sqlReader
GridView2.DataBind()
GridView2.Columns.Clear()
Else
MsgBox("The centre code provided does not exist...")
End If
'This is closing the connection to the database once we have finished with it.
sqlConn.Close()
'This is to clear the list of items out of the GridView box.
End If
End Sub
Property GridViewSortDirection() As String
Get
If IsNothing(ViewState.Item("GridViewSortDirection")) Then
Return "desc"
End If
Return ViewState.Item("GridViewSortDirection")
End Get
Set(ByVal Value As String)
ViewState.Item("GridViewSortDirection") = Value
End Set
End Property
Function GetSortDirection() As String
Dim GridViewSortDirectionNew As String
Select Case GridViewSortDirection
Case "DESC"
GridViewSortDirectionNew = "ASC"
Case "ASC"
GridViewSortDirectionNew = "DESC"
Case Else
GridViewSortDirectionNew = "DESC"
End Select
GridViewSortDirection = GridViewSortDirectionNew
Return GridViewSortDirectionNew
End Function
Protected Sub GridView_Sorting1(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView2.Sorting
Dim myPageIndex As Integer = GridView2.PageIndex
Dim mySortdirection As String = GetSortDirection()
Dim sortExpression = e.SortExpression
Dim dv As New DataView()
If (GridViewSortDirection = SortDirection.Ascending) Then
GridViewSortDirection = SortDirection.Descending
'SortGridView(sortExpression, "DESCENDING")
Else
GridViewSortDirection = SortDirection.Ascending
End If
'dv.Table = GridView2.DataSource
' dv.Sort = e.SortExpression & " " & mySortdirection
' GridView2.DataSource = dv
'
' GridView2.DataBind()
'
' GridView2.PageIndex = myPageIndex
End Sub
'Protected Sub SortGridView(string sortExpression,string direction)
'DataTable dt = GetData().Tables[0]
' DataView(GridView2 = New DataView(GridView2))
' GridView2.Sort = sortExpression + Direction
'
' GridView1.DataSource = GridView2
' GridView1.DataBind()
'
' End Sub
私は、私は文字列を使用しています、ダブルを使用していないと、このエラーが何を意味するのかわかりません。次のように
私のGridViewのは、次のとおりです。
<asp:GridView ID="GridView2" runat="server" Height="143px" AllowSorting="true" OnSorting="GridView_Sorting1"
は、どのように私はこの問題を乗り越えることができますか?
すべての助力とアドバイスをいただければ幸いです。
多くのおかげで、
ダン
こんにちはダン。スタックオーバーフローへようこそ。また、エラーメッセージを報告するときに、スタックされている行が何であるかを明確にしてください。たぶん、doubleを期待するプロパティに文字列を代入しようとしていますが、エラーがスローされた行が分かっていれば、どちらを解決するのがはるかに簡単です。 :) – Chris