【发布时间】:2014-05-20 06:40:20
【问题描述】:
我正在尝试使用文本框从数据库中选择数据并将其显示在 gridview 的新行上。文本框将使用条形码扫描仪输入。我只需要扫描条形码然后在数据库中搜索数据并将其添加到gridview的新行中。它将使用 ontextchange 事件执行。
到目前为止,这是我的代码:
Private Sub selectData(ByVal rowcount As Integer)
sql = "Select Barcode, Name from tbl_barcode where [Barcode] = '" + txtScanBarcode.Text + "'"
cmd = New SqlCommand(sql, con)
drDataReader = cmd.ExecuteReader
While (drDataReader.Read())
dtDatatable.Columns.Add(New System.Data.DataColumn("Barcode", GetType([String]))) '0
dtDatatable.Columns.Add(New System.Data.DataColumn("Name", GetType([String]))) '1
If Session("CurrentData") IsNot Nothing Then
For i As Integer = 0 To rowcount
dtDatatable = DirectCast(Session("CurrentData"), DataTable)
If dtDatatable.Rows.Count > 0 Then
dr = dtDatatable.NewRow()
dr(0) = "Barcode"
dr(1) = "Name"
End If
Next
dr = dtDatatable.NewRow()
dr(0) = "Barcode"
dr(1) = "Name"
dtDatatable.Rows.Add(dr)
Else
dr = dtDatatable.NewRow()
dr(0) = "Barcode"
dr(1) = "Name"
dtDatatable.Rows.Add(dr)
End If
End While
If Session("CurrentData") IsNot Nothing Then
dtDatatable.Load(drDataReader)
GridView1.DataSource = DirectCast(Session("CurrentData"), DataTable)
GridView1.DataBind()
Else
dtDatatable.Load(drDataReader)
GridView1.DataSource = dtDatatable
GridView1.DataBind()
End If
Session("CurrentData") = dtDatatable
End Sub
Protected Sub txtScanBarcode_TextChanged(sender As Object, e As EventArgs) Handles txtScanBarcode.TextChanged
If Session("CurrentData") IsNot Nothing Then
Dim dt As DataTable = DirectCast(Session("CurrentData"), DataTable)
Dim count As Integer = dt.Rows.Count
selectData(count)
Else
selectData(1)
End If
End Sub
以上代码,可以添加新行但不能从数据库中获取数据。当我执行它并扫描条形码时,它不会显示数据库中的数据,而是在 dr(0) 上添加文本“条形码”,在 dr(1) 上添加文本“名称”。所以,我认为从数据库中获取数据的 sql 不起作用。它不会从数据库中调用任何数据。 您有什么建议,如何从数据库中选择数据并将其提取到行中?
提前致谢。不过我真的很感激。
【问题讨论】:
-
您可能需要查看查询的参数。
-
谢谢本。你有关于如何在我的问题上使用参数的链接或来源吗?
标签: asp.net sql .net vb.net gridview