- - PR -
ワイルドカード検索について。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-25 14:35
ご指摘ありがとうございます。
TextBoxに入力された値をもとにデータを抽出しバインドさせたいのでDataSource では無理だと判断したのですが可能なのでしょうか? DataReaderから正しく取得できており、 CLASS.PROPERTY1 =reader.GetString(0) CLASS.PROPERTY2 =reader.GetString(1) は動作しているのですが、ArrayListに格納される配列がすべて同じデータになっていたりするのです。 正しくArrayListにデータを格納する方法が間違っていいるのだと思います。 Class名はClass1とし、pro1,pro2,pro3,pro4はプロパティです。 Public Function Function1 () As ArrayList Dim list As New ArrayList Dim cls1 As New Class1 Dim setting As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("ConnectionString") Dim factory As DbProviderFactory = DbProviderFactories.GetFactory(setting.ProviderName) Using db As DbConnection = factory.CreateConnection db.ConnectionString = setting.ConnectionString Dim comm As DbCommand = factory.CreateCommand comm.CommandText = "SELECT A, B, C, D FROM Products WHERE productName LIKE " & "'%" & TextBoxの文字列 & "%'" comm.Connection = db db.Open() Dim reader As DbDataReader = comm.ExecuteReader() If reader.Read() Then //ここが違っていると思うのですが。 cls1 .pro1= reader.GetInt32(0) cls1 .pro2= reader.GetString(1) cls1 .pro3= reader.GetString(2) cls1 .pro4= reader.GetString(3) list.Add(cls1) End If End Using Return list End Function End Class のようにしてTextBoxの文字列を含む商品のArrayListをGridViewにバインドしたいと思っています。 毎度わかりずらく、恐縮です…。 [ メッセージ編集済み 編集者: hoshino 編集日時 2007-02-25 14:42 ] | ||||
|
投稿日時: 2007-02-25 14:41
連続で失礼します。
上のコメントしたIf 文のところをDo While にすると同じデータがバインドされてしまいます。 正しく配列を組ませる方法があればご指摘願います。 | ||||
|
投稿日時: 2007-02-25 15:36
それは、同じインスタンスを使っているからです。 変数 'cls1' のメンバに値を格納する前に、新しいインスタンスを生成しましょう。 # このようなミスを防ぐためにも、変数 'cls1' はブロック レベルの局所変数にすべきですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-25 15:40
皆様ご指摘ありがとうございました。
皆様のご指摘を考慮し、ただ今解決することができました。 きよの様のご指摘、Dim CLASS As New クラス がないというのが主たる原因であったようです。 皆様ご丁寧にありがとうございました。またご指導願えれば幸いと思っております。 失礼いたします。 |