2009-04-28 18 views
0

検索の結果をgridviewに表示しようとしています。 検索結果に最後と最初の名前の両方の検索結果を表示します。 私はSubsonicでASP.NETを使用しており、以下のステートメントを変更する方法を理解することはできません。 どこかにワイルドカードが必要だと思いますか?ASP.NET複数のパラメータを検索

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

私はうまくいくと思います。

生成された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()を行うこともできます。

+0

sql statemntをページに書き込むことを意味しますか? 上記のコードを追加しましたが、何も表示されません。 .ContainsStringを追加するのに疲れましたが、IntelliSenseは認識できませんでしたか? – Brett

+0

私はVisual Studioのデバッガでコードを実行している間、SQL文をチェックしていました。 SubSonic 2.2をダウンロードして、プロジェクト内のSubSonic.dllファイルを置き換えてみてください。特集記事はこちらからダウンロードしてください:http://code.google.com/p/subsonicproject/これにより、ContainsString()、StartsWith()、およびEndsWith()メソッドが得られます。 –

+0

私はVSにかなり新しく、デバッガでコードを実行する方法がわからない。私はSubsonicの新しいバージョンを手に入れます。 – Brett