ASP.NET Поиск по нескольким параметрам - PullRequest
0 голосов
/ 29 апреля 2009

Я пытаюсь отобразить результаты поиска в сетке. Я хочу, чтобы поиск показывал результаты как по фамилии, так и по имени. Я использую 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 Ответ

1 голос
/ 29 апреля 2009

Я думаю, что это должно работать.

Вы знакомы с получением сгенерированного 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 ().

...