我有一个包含表格和列的数据库:
人员:id,first_name,last_name
地址:id,city,street_number,persons_id
我正在尝试在asp.net中创建一个搜索引擎。 我有控件:TextBox1,DropDownList1,Button1,带有SqlDataSource1的GridView1 DropDownList1代码:
<asp:DropDownList ID="DropDownList1" runat="server"
DataValueField="first_name" AutoPostBack="false">
<asp:ListItem Value="first_name">First name</asp:ListItem>
<asp:ListItem Value="last_name">Last name</asp:ListItem>
<asp:ListItem Value="city">City</asp:ListItem>
</asp:DropDownList>
在SqlDataSource控件中:在SelectCommand中我试图做这样的事情:
SelectCommand="SELECT first_name, last_name, city FROM persons, addresses WHERE persons.id = addresses.persons_id AND (? LIKE '%'??'%')">
在?和??我想把DropDownList1和TextBox1中的值。有什么建议吗?
答案 0 :(得分:0)
asp:ControlParameter
中需要两个SqlDataSource1
,如下所示:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="YourConnectionString"
SelectCommand="SELECT first_name, last_name, city FROM persons, addresses WHERE persons.id = addresses.persons_id AND (@FirstLastCity LIKE '%@SearchString%')">
<SelectParameters>
<asp:ControlParameter ControlID="DropDownList1" Name="FirstLastCity" PropertyName="SelectedValue" />
<asp:ControlParameter ControlID="TextBox1" Name="SearchString" PropertyName="Text" />
</SelectParameters>
</asp:SqlDataSource>
这应该是第一步。我很确定'%@SearchString%'
中的SelectCommand
无效。但必须有一种方法可以在标记代码中合并%
,@SearchString
和%
。
或者,您可以在代码后面设置参数值,如下所示:
SqlDataSource1.SelectParameters.Add("@SearchString", "%" + TextBox1.Text + "%");