我有一个包含表和列的数据库:
人员: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 + "%");

10-06 03:49