使用sqldatasource的全文搜索

时间:2015-01-27 21:41:59

标签: asp.net sqldatasource

我在使用sqldatasource的全文搜索时遇到问题。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT 1, 2, 3 FROM table WHERE CONTAINS(2, @text)">
<SelectParameters>
    <asp:ControlParameter ControlID="tbOCRSearch" Name="text" 
                Type="String" DefaultValue="" PropertyName="Text" />
</SelectParameters>

如果我只输入一个搜索词,那么效果很好。但是如果我输入两个术语就会引发错误。

但是,如果我将“termone termtwo”放在双引号中,则查询可以正常工作。

如何修改我的selectcommand以添加双引号?

1 个答案:

答案 0 :(得分:0)

解决。

花了我几个小时的时间。在sqldatasource中,我们需要添加一个OnSelecting事件。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="SELECT 1, 2, 3 FROM table WHERE CONTAINS(2, @text)" 
OnSelecting="SqlDataSource1_Selecting">
<SelectParameters>
    <asp:ControlParameter ControlID="tbOCRSearch" Name="text" 
                Type="String" DefaultValue="" PropertyName="Text" />
</SelectParameters>

然后在你背后的代码中你将需要其中一个。然后,您可以在文本周围添加引号。

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{

    e.Command.Parameters["@text"].Value = "\"" + tbOCRSearch.Text + "\"";
}

现在一切都像它应该的那样。