首页 > 解决方案 > Visual Studio 2019 .NET VB Web 应用程序如何将查询结果显示到 ViewGrid?

问题描述

我是 VB 和 .NET 框架的新手。我想要做的是让用户在文本框中输入两个值,这将过滤查询结果。我创建了一个单独的类来管理 SQL 函数,并将这些函数用于不同 Web 表单的查询搜索。我当前的问题是,当我单击执行查询搜索的按钮时,GridView 不显示或显示查询结果。我按照“GridView1.DataSource = dt”的方式将值分配给 ViewGrid。

我错过了一个步骤,我是否必须以某种方式设置 ViewGrid 或数据源?

对于我的页面设计中的其他上下文,我有两个文本框、一个执行按钮和一个默认的 GridView。

我会很感激任何人都可以给我的帮助。

我的代码:

SQLControl类:

Imports System.Data.SqlClient
Public Class SQLControl

Private ReadOnly ConStr As String = "constring"
Private DBCmd As SqlCommand

'Query Parameters
Public Params As New List(Of SqlParameter)

'This generates a blank sqlclient class with the deafult connection string
Public Sub New()
End Sub

'Allow connection string override
Public Sub New(connectionString As String)
    ConStr = connectionString
End Sub

'Execute Query Sub
Public Function ExecQuery(query As String) As DataTable

    Dim DBDT = New DataTable
    Using DBCon As New SqlConnection(ConStr),
            DBCmd As New SqlCommand(query, DBCon)
        Params.ForEach(Sub(p) DBCmd.Parameters.Add(p))
        Params.Clear()
        DBCon.Open()
        DBDT.Load(DBCmd.ExecuteReader)
    End Using
    Return DBDT

End Function

'Add Params
Public Sub AddParam(Name As String, Value As Object)
    Dim NewParam As New SqlParameter(Name, Value)
    Params.Add(NewParam)
End Sub

End Class

网络表单按钮代码:

Imports System.Data.SqlClient
Public Class Discount_Detail
Inherits System.Web.UI.Page
Private ReadOnly SQL As New SQLControl("constring")

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

Protected Sub ExecuteButton_Click(sender As Object, e As EventArgs) Handles ExecuteButton.Click
    Dim StoreID As Integer
    Dim TransID As Integer
    If Not Integer.TryParse(StoreIDTextbox.Text, StoreID) Then
        MsgBox("Invalid input. Please enter both Store ID and Transaction ID.")
        Exit Sub
    End If

    If Not Integer.TryParse(TransactionIDTextbox.Text, TransID) Then
        MsgBox("Invalid input. Please enter both Store ID and Transaction ID.")
        Exit Sub
    End If

    SQL.AddParam("@Str_ID", StoreID)
    SQL.AddParam("@Tran_ID", TransID)
    Dim dt As DataTable
    Try
        dt = SQL.ExecQuery("SELECT H.Emp_ID, H.Cust_ID, D.* 
          FROM Transaction_Header H 
          INNER JOIN LN_Detail L On (H.Str_ID = L.Str_ID And H.Rgst_ID = L.Rgst_ID And H.Tran_ID = L.Tran_ID)
          INNER Join LN_Discount D ON (L.Str_ID = D.Str_ID AND L.Rgst_ID = D.Rgst_ID AND L.Tran_ID = D.Tran_ID AND L.Tran_LN_Num = D.Tran_LN_Num)
          WHERE H.Str_ID = @Str_ID AND H.Tran_ID = @Tran_ID")

    Catch ex As Exception
        MsgBox(ex.Message)
        Exit Sub
    End Try

    GridView1.DataSource = dt
End Sub

End Class

标签: .netvb.netasp.net-web-api

解决方案


我弄清楚了 ViewGrid 上查询结果的输出缺少什么。

最后我错过了 GridView1.Databind()

GridView1.DataSource = dt
GridView1.DataBind()

推荐阅读