.net - 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
解决方案
我弄清楚了 ViewGrid 上查询结果的输出缺少什么。
最后我错过了 GridView1.Databind()
GridView1.DataSource = dt
GridView1.DataBind()
推荐阅读
- mysql - 根据另一个表中定义的映射重命名表列的列 - 使用 MYSQL
- c# - 使用 docker 在 linux 中运行 dotnet 应用程序
- regex - 我会通过正则表达式 javascript 从给定字符串中选择所有子字符串以“CREATE TABLE”开头并以“;”结尾
- mongodb - 猫鼬。查找包含所有嵌套集合的集合中的所有字段
- snowflake-cloud-data-platform - 如何在 Snowflake 中正确加载包含引号字符环绕字符串字段的 CSV 文件格式?
- oracle - oracle 中的 No_Data_found 异常
- javascript - 如何在视频进度指示栏上的 html5 视频播放器中添加标记?
- html - 如何在css中创建一个带有数字的头像
- python-3.x - 无法使用 Python3 禁用 Selenium Chrome WebDriver 在无头模式下下载图像
- javascript - javascript:对象解构