- PR -

ワイルドカード検索について。

投稿者投稿内容
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 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 ]
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-02-25 14:41
連続で失礼します。

上のコメントしたIf 文のところをDo While にすると同じデータがバインドされてしまいます。
正しく配列を組ませる方法があればご指摘願います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-25 15:36
引用:

hoshinoさんの書き込み (2007-02-25 14:41) より:

上のコメントしたIf 文のところをDo While にすると同じデータがバインドされてしまいます。
正しく配列を組ませる方法があればご指摘願います。


それは、同じインスタンスを使っているからです。
変数 'cls1' のメンバに値を格納する前に、新しいインスタンスを生成しましょう。

# このようなミスを防ぐためにも、変数 'cls1' はブロック レベルの局所変数にすべきですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hoshino
常連さん
会議室デビュー日: 2007/02/21
投稿数: 46
投稿日時: 2007-02-25 15:40
皆様ご指摘ありがとうございました。

皆様のご指摘を考慮し、ただ今解決することができました。
きよの様のご指摘、Dim CLASS As New クラス がないというのが主たる原因であったようです。

皆様ご丁寧にありがとうございました。またご指導願えれば幸いと思っております。

失礼いたします。

スキルアップ/キャリアアップ(JOB@IT)