DataSetの内容を表示する
テンプレートを指定する
IDとパスワードを入力するテキストボックスとデータ取得用のボタンを配置して、MultiRowのスマートタグから作成したテンプレートを指定し、チェック項目を図13のように設定すれば完成です。
コードを記述する
ボタンのクリックイベントに、リスト1のようなコードを記述します。
Private Sub Get_Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Get_Button.Click Dim userID As String = Me.UserID_TextBox.Text.Trim Dim pass As String = Me.Password_TextBox.Text.Trim Me.Cursor = Cursors.WaitCursor Me.Message_ToolStripStatusLabel.Text = "取得中" Me.Refresh() Try Using _proc As New Twitter Me.CZ0911_GcMultiRow.DataSource = _proc.GetFollowers(userID, pass) Me.CZ0911_GcMultiRow.DataMember = "Follower" End Using Me.Message_ToolStripStatusLabel.Text = "" Catch ex As Exception Me.Message_ToolStripStatusLabel.Text = ex.Message Finally Me.DateTime_ToolStripStatusLabel.Text = Now.ToString("MM/dd hh:mm:ss") Me.Cursor = Cursors.Default End Try End Sub
リスト1では、ステータスバーにメッセージを表示したりする部分も含んでいますが、必須なのは次の部分だけです。
Me.CZ0911_GcMultiRow.DataSource = _proc.GetFollowers(userID, pass) Me.CZ0911_GcMultiRow.DataMember = "Follower"
テンプレートの定義があれば、これだけの記述でDataSetの内容を一覧表示できます。
実行する
Twitterの登録IDとパスワードを入力して[取得]ボタンをクリックすれば、図14のように左端にアイコンが表示されます。右側には上下2段でフォロワーの情報が表示されます。
MultiRowの内容を取得する
MultiRowに表示されている内容を変更した場合、変更値を取得するには2つの方法があります。
- DataFieldプロパティが指定されており、DataSetが割り当てられているセルの場合、画面の変更はDataSetの内容に反映されるので、DataSetの値から変更値を取得
- DataSetが割り当てられていない非バインドのセルの場合、プログラムコードでセルから変更値を取得
非バインドセルからの情報取得
サンプル「CZ0911FollowerType2」のテンプレートでは、図15にあるように1段目の最右端に[処理]としてオプションボタンを設定しています。また、DataFieldにも設定を行っていないため「(なし)」となっています。
[処理]オプションボタンでは、次の選択が可能です(実際にTwitter宛てに更新する処理はサンプルに含まれていません)。
- None:特に何も処理しません
- Follow:該当者をフォロー(発言を購読)します
- Block:該当者に自分の発言を見せなくします
各行の[処理]オプションボタンの値を取得するためには、「インデックス」を指定します。セルにどのようなインデックスが割り当てられているかは、テンプレートデザイナで[テンプレート]‐[セルの情報]‐[インデックス]メニューをクリックして全体表示すると分かりやすいでしょう。
[処理]オプションボタンのインデックスは「6」になので、値を取得するコードはリスト2のようになります。
Private Sub Proc_Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Proc_Button.Click Me.Cursor = Cursors.WaitCursor Me.Message_ToolStripStatusLabel.Text = "更新中" Me.Refresh() Try For Each row As GrapeCity.Win.MultiRow.Row In Me.CZ0911_GcMultiRow.Rows Select Case row.Item(6).Value Case "0" 'None Case "1" 'Follow Case "2" 'Block Case Else '選択なし End Select Next Catch ex As Exception Me.Message_ToolStripStatusLabel.Text = ex.Message Finally Me.DateTime_ToolStripStatusLabel.Text = Now.ToString("MM/dd hh:mm:ss") Me.Cursor = Cursors.Default End Try End Sub
リスト2では、「For Each row As GrapeCity.Win.MultiRow.Row In Me.CZ0911_GcMultiRow.Rows
」を使っていますが、リスト3のように行位置を指定して取得することも可能です。
For rowIndex As Integer = 0 To Me.CZ0911_GcMultiRow.RowCount - 1 Select Case Me.CZ0911_GcMultiRow.GetValue(rowIndex, 6).Value Case "0" 'None Case "1" 'Follow Case "2" 'Block Case Else '選択なし End Select Next
次回予告
次回は、MultiRowとInputMan、ActiveReportsを組み合わせ、画面と帳票で同じ形式を実現する方法を取り上げてみたいと思います。