アンバウンドモードのサンプルの画面構成
今回のサンプルでは、MultiRowテンプレートデザイナで図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行分のデータ表示域となります。
アンバウンドモードでのデータ表示
アンバウンドモードでデータを表示するには、リスト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」のようにセルを指定して値を設定することで行います。


