我的转发器控件正在显示加载的数据库字段。
我在转发器控件外面有一个搜索按钮。按下按钮时,我希望转发器在转发器中显示仅搜索结果。我怎么能这样做?
这是显示所有内容的代码。在搜索中我不想在repeater内部显示以下详细信息。只搜索结果。
受保护的Sub BindRepeater() Dim cmd As New SqlCommand(“Select * from abc”,con)
If con.State = ConnectionState.Closed Then
con.Open()
End If
Dim ds As New DataSet()
Dim adp As New SqlDataAdapter(cmd)
adp.Fill(ds)
' Repeater1.DataSource = ds
Repeater1.DataBind()
con.Close()
结束 below是我在搜索按钮中添加的新代码
cmd = New SqlCommand
cmd.Connection = con
cmd.CommandText = "select * from ABC where LicenseID = '" & TextBox16.Text & "'"
drd = cmd.ExecuteReader
If drd.HasRows = True Then
drd.Read()
End If
Using con = New SqlConnection("Data Source=ABC-556012RT13\SQLEXPRESS;Initial Catalog=KABC;Integrated Security=True")
Using da = New SqlDataAdapter("select * from ABC where LicenseID = @LicenseID", con)
da.SelectCommand.Parameters.AddWithValue("@LicenseID", TextBox16.Text)
Dim table = New DataTable
da.Fill(table)
Repeater1.DataSource = table
Repeater1.DataBind()
End Using
End Using
答案 0 :(得分:0)
使用sql-parameters到prevent sql-injection!
除此之外,只需使用查询结果作为转发器的数据源,例如填写DataTable
:
Using con = New SqlConnection("connectionString")
Using da = New SqlDataAdapter("select * from abc where LicenseID = @LicenseID", con)
da.SelectCommand.Parameters.AddWithValue("@LicenseID", TextBox16.Text)
Dim table = New DataTable
da.Fill(table)
repeater1.DataSource = table
repeater1.DataBind()
End Using
End Using
我还使用using
语句来确保即使出错也会处理所有非托管资源(如开放连接)。