SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(MultiRow)

一覧更新画面を持つWebアプリの作り方~MultiRow for ASP.NETの編集機能を使いこなす!

1レコード複数行表示を実現するMultiRow for ASP.NETの実力(後編)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (83.3 KB)

アンバウンドモードのサンプルの画面構成

 今回のサンプルでは、MultiRowテンプレートデザイナで図2のように設定したデザインとしました。

図2 アンバウンドモードのサンプル画面構成
図2 アンバウンドモードのサンプル画面構成

 行を特定するための主キーとなるID列の値を設定するため、図2のデザインではID列を設定するIDセルは非表示の状態で列ヘッダと重ね合わせています。

 UnitPriceセル、Numberセル、Priceセルには初期値として「0」を設定するため、NullValueプロパティに「0」を設定し、UnitPriceセルとPriceセルにはCurrencySymbolプロパティに「\」を指定しています。

 CategoryセルはDropDownListになっており、区分マスタに設定された値を選択できるようになっています。

 MultiRow for ASP.NETのテンプレートデザイナも、MultiRow for Windows Formsのテンプレートデザイナと同様に、セルとセルをきっちりと寄せ合う事ができ、その操作性もブロックがカチッとはまるようで快適です。なお、MultiRowでは、テンプレートデザイナでデザインした内容が1行分のデータ表示域となります。

図3 アンバウンドモードのサンプル実行例
図3 アンバウンドモードのサンプル実行例

アンバウンドモードでのデータ表示

 アンバウンドモードでデータを表示するには、リスト1のようなコードを記述します。

リスト1 アンバウンドモードでデータ表示
Protected Sub Me_Load(ByVal sender As Object,
                      ByVal e As System.EventArgs) _
                  Handles MultiRowSample_Form.Load
    If Not Me.IsPostBack Then
        Call GetRecords()
    End If
End Sub

Private Function GetRecords() As Boolean
    Dim isOK As Boolean = False

    Using _proc As New CZ1008Bound
        Dim ds As Data.DataSet = _proc.GetRecords("admin", "", "WS-DF502")
        'カテゴリドロップダウン設定
        With block
            Dim cell As GrapeCity.Web.MultiRow.DropDownListCell =
                CType(Me.MultiRow1.Template.Row.Cells("Category"), DropDownListCell)
            For Each row As Data.DataRow In ds.Tables("Category").Rows
                cell.Items.Add(New GrapeCity.Web.MultiRow.ListItem(row(0).ToString))
            Next
            Me.MultiRow1.Template = Me.MultiRow1.Template
        End With
        'データ設定
        For index As Integer = 0 To ds.Tables("Bill").Rows.Count - 1
            MultiRow1.Rows.Add()
            With MultiRow1.Rows(index)
                Me.ViewState.Add("CustomerID", ds.Tables("Bill").Rows(index).Item("CustomerID").ToString)
                .Cells("ID").Value = ds.Tables("Bill").Rows(index).Item("ID")
                .Cells("Date").Value = ds.Tables("Bill").Rows(index).Item("Date")
                .Cells("Products").Value = ds.Tables("Bill").Rows(index).Item("Products")
                .Cells("Number").Value = ds.Tables("Bill").Rows(index).Item("Number")
                .Cells("UnitPrice").Value = ds.Tables("Bill").Rows(index).Item("UnitPrice")
                .Cells("Price").Value = .Cells("Number").Value * .Cells("UnitPrice").Value
                .Cells("SlipNo").Value = ds.Tables("Bill").Rows(index).Item("SlipNo")
                .Cells("Category").Value = ds.Tables("Bill").Rows(index).Item("Category")
            End With
        Next
        '
        isOK = True
    End Using
    Return isOK
End Function

DropDownListに選択候補を設定する方法

 リスト1の「カテゴリドロップダウン設定」のコメント行の次からが、Category選択用のDropDownListの選択候補を設定するコードです。

 選択候補は行データではないので、テンプレートに値を設定します。「CType(Me.MultiRow1.Template.Row.Cells("Category"), DropDownListCell)」でテンプレートの該当セルへのパスを取得したら、Items.Addメソッドで選択候補を追加して、最後に「Me.MultiRow1.Template = Me.MultiRow1.Template」の呪文行を実行して、テンプレートに反映します。

MultiRowにデータを設定する方法

 MultiRowへのデータ設定は、「MultiRow1.Rows.Add()」にてテンプレートのデザインに応じた行を追加し、その行に対して「.Cells("ID").Value」のようにセルを指定して値を設定することで行います。

次のページ
アンバウンドモードでのデータ更新

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(MultiRow)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5402 2010/09/02 15:15

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング