|
分類:[VB.NET/VB2005 以降]
お世話になります。
VB2010、DataRepeater使用しています。
DataRepeaterで、データをバインドではなく個別に設定する方法がわかりません。
ItemTemplate内に複数のオブジェクトを貼り付け、 その中にLabel1(Label、値「No」)が含まれます。
この状態でデータバインド後、プログラムから行を指定して値を設定したいのですが、うまくいきません。
・・・データ取得 DataRepeater1.DataSource = dt 'DataTable。1000件程度のデータあり For i = 0 To DataRepeater1.ItemCount - 1 DataRepeater1.CurrentItemIndex = i CType(DataRepeater1.CurrentItem.Controls("Label1"), Label).Text = i.ToString Next
上記ソースを実行すると、Forのループ中は画面が描画されてカウントが 増えていっているのが見え、終了すると画面上には「998」「999」「1000」等の 値が表示され、うまくいったように見えるのですが、スクロールしてみると 「998」「997」「No」「995」「996」「No」「997」「998」のように、 最初設定した値とは違う値が表示されてしまいます。
そもそも、DataRepeaterはバインド以外で個別にデータを表示する事はできないのでしょうか。
また、最終的には編集されたデータを取得して処理したいのですが、 DataRepeater1.Rows(999).TextBox1.Text のように「行番号」を指定してデータを取得する事ができず、 DataRepeater1.CurrentItemIndex = 999 For Each ctl As Control In DataRepeater1.CurrentItem.Controls ・・・ のように、現在行を変更してからCurrentItem経由で値を取得する方法しか見つかりませんでした。
・DBの値を自由なレイアウトで一覧表示したい ・バインド以外で自由にデータを表示したい ・行番号を指定してデータの設定、取得がしたい という要件の場合、DataRepeaterでは難しいのでしょうか。
|