ASP.NET搜索多个参数

时间:2009-04-28 21:44:21

标签: asp.net subsonic

我正在尝试在gridview上显示搜索结果。 我希望搜索显示姓氏和名字的结果。 我正在使用ASP.NET与Subsonic,并无法弄清楚如何修改下面的statemnt。 我猜它需要一个通配符吗?

Name: <asp:TextBox ID="txtSearchName" runat="server"></asp:TextBox> 

    GridView1.DataSource = new Select(PastAwardName.Schema.TableName + ".*", PastAwardType.Schema.TableName + ".*")
          .From(PastAwardName.Schema)
          .InnerJoin(PastAwardType.Schema.TableName, PastAwardType.Columns.VolID, PastAwardName.Schema.TableName, PastAwardName.Columns.VolID)
          .Where(PastAwardName.Columns.LName).IsEqualTo(this.txtSearchName.Text)
          .Or(PastAwardName.Columns.FName).IsEqualTo(this.txtSearchName.Text)
          .OrderAsc(PastAwardType.Columns.AwardYear)
          .ExecuteDataSet();

1 个答案:

答案 0 :(得分:1)

我认为这应该有效。

您是否熟悉从该查询中获取生成的SQL?

SubSonic.SqlQuery q = new Select(PastAwardName.Schema.TableName + ".*", PastAwardType.Schema.TableName + ".*")
          .From(PastAwardName.Schema)
          .InnerJoin(PastAwardType.Schema.TableName, PastAwardType.Columns.VolID, PastAwardName.Schema.TableName, PastAwardName.Columns.VolID)
          .Where(PastAwardName.Columns.LName).IsEqualTo(this.txtSearchName.Text)
          .Or(PastAwardName.Columns.FName).IsEqualTo(this.txtSearchName.Text)
          .OrderAsc(PastAwardType.Columns.AwardYear);
string sql = q.BuildSqlStatement();

检查sql的值(在该行上有断点)以提供问题的进一步线索。

对于通配符 - 使用ContainsString()方法而不是硬编码通配符,如下所示:

.Where(PastAwardName.Columns.LName).ContainsString(this.txtSearchName.Text)

这将自动将特定于提供者的通配符添加到参数的开头和结尾。你也可以做StartsWith()和EndsWith()。