- PR -

WEB DataGrid コントロールのテンプレート作成について

1
投稿者投稿内容
WEIWEI
常連さん
会議室デビュー日: 2002/07/16
投稿数: 26
投稿日時: 2002-07-16 11:59
ASP.NETのDataGridコントロールにテンプレート列として別のDataGridコントロールを動的に入れたいと考えています。
DataGrid1にDataGrid2を挿入するとして、
col = New TemplateColumn()
col.HeaderText = HeaderName.ToString
col.ItemTemplate = DataGrid2
DataGrid1.Columns.Add(col)
DataGrid1.DataBind()
でOKと思うのですが、col.ItemTemplate = DataGrid2のところで
「指定されたキャストは有効ではありません。」
というエラーが出て止まってしまいます。
どのようにすれば良いか、わかる方おられたら教えてください。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-07-16 14:09
DataGridのTemplateColumnにDataGridをネストさせるサンプルです。

親のDataGridのOnItemDataBoundイベントで挿入します。

コード:
 25: Sub dgrdCustomers_ItemDataBound( _
 26:   s As object, e As DataGridItemEventArgs)
 27:   If e.Item.ItemType = ListItemType.Item _
 28:     XOr e.Item.ItemType = ListItemType.AlternatingItem Then
 29:     Dim dgrdOrders As New DataGrid
 31:   	With dgrdOrders
 48:       .AutoGenerateColumns = False
 50:       Dim bc As New BoundColumn()
 51:       With bc
 52:         .HeaderText = "ID"
 53:         .DataField = "OrderID"
 54:         .ItemStyle.Wrap = False
 55:       End With
 56:       .Columns.Add(bc)
 85:       Dim dvwOrders As DataView = _
 86:         dstNwind.Tables("Orders").DefaultView
 87:       dvwOrders.RowFilter = "CustomerID=" & e.Item.Cells(0).Text
 88:       .DataSource = dvwOrders
 89:       .DataBind()
 90:     End With
 91:     e.Item.Cells(2).Controls.Add(dgrdOrders)
 92:   End If
 93: End Sub



ネストさせるDataGridの列が固定なときは、DataSourceをランタイム時に
設定する方法があります。この方がコードが少ないのでお勧めです。

Happy Programming
Akio Kasai
WEIWEI
常連さん
会議室デビュー日: 2002/07/16
投稿数: 26
投稿日時: 2002-07-17 10:18
Dr ADO.NETさんありがとうございます。
これでうまくいきますが、この場合だと、デザイン時にTemplateColumn等のタグを作っておく必要があり、カラム数は制限されてしまいます。この数もダイナミックに決めることができればと考えています。どうか良い方法があればお願いします。
1

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