我有一个dropdownlist控件,它显示了一个名为model的表中的主键,以及一个文本框,当我使用下拉列表时,该文本框应显示同一个表中的另一个值(外键)。 PK和FK都有一个值。
由于我不知道如何做到这一点,我使用的搜索方法应该在每次有人从下拉列表中选择一个新值时调用。
搜索代码:
Public Function searchArea(ByVal model As String) As String
Dim mycon As New Connection
Using connection As New SqlConnection(mycon.GetConnectionString())
Using command As New SqlCommand()
command.Connection = connection
command.CommandType = CommandType.Text
command.CommandText = "SELECT area FROM model WHERE model= @model"
command.Parameters.AddWithValue("@model", model)
connection.Open()
Dim dataReader As SqlDataReader = command.ExecuteReader()
If (dataReader.Read()) Then
Return dataReader.ToString(0)'this query should always have a single value
End If
Return "Nothing"
End Using
End Using
End Function
活动代码:
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList1.SelectedIndexChanged
Dim objModel As New ModelDAO 'the class where the method is
TextBox9.Text = objModel.searchArea(DropDownList1.Text)
End Sub
<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="True"
DataSourceID="SqlDataSource1" DataTextField="MODEL" DataValueField="MODEL">
<asp:ListItem Text="-Select-" Value="" />
</asp:DropDownList>
<asp:TextBox ID="TextBox9" runat="server" Enabled="False" Height="24px"
Width="219px"></asp:TextBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:DBUserInterfaceConnectionString %>"
SelectCommand="SELECT [MODEL] FROM [MODEL]">
</asp:SqlDataSource>
但正如我想的那样,它不起作用,你能帮帮我吗?
编辑:谢谢,现在它触发了,但是我得到了值:'S'这个值不属于我的桌子。你能告诉我我的搜索方法是否合适?答案 0 :(得分:3)
尝试添加此
<asp:DropDownList ID="DropDownList1"
runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
.....
</asp:DropDownList>
答案 1 :(得分:1)
尝试将datareader加载到datatable中,然后使用它将数据打印到文本框中。
答案 2 :(得分:1)
谢谢大家,我解决了这个问题:
Return dataReader.GetString(0)
而不是:
Return dataReader.ToString(0)
这只是一种类型转换问题。