我有一个包含表和列的数据库:
人员:id,first_name,last_name
地址:身份证,城市,街道编号,人员编号
我正在尝试在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的值。有什么建议么 ?
最佳答案
您将在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 + "%");