使用できるオプションがいくつかあります。1つはテンプレートを使用する方法で、もう1つは行の作成時に手動でコントロールを追加する方法です。テンプレートの例(これはチェックボックスを使用しますが、簡単に切り替えることができます):
Public Class CheckBoxTemplate
Implements ITemplate
Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn
Dim cb As CheckBox = New CheckBox()
cb.ID = "someId"
cb.AutoPostBack = True
container.Controls.Add(cb)
End Sub
End Class
グリッドビューコントロールを作成するアプリコードでは、次のようになります。
Dim gv As New GridView
With gv
.ID = "myGridView"
.AutoGenerateColumns = False
.DataKeyNames = New String() {"somePKID"}
.GridLines = GridLines.Both
.AllowSorting = False
.AllowPaging = False
.PageSize = numRows
.Width = tableWidth
.BorderColor = Drawing.ColorTranslator.FromHtml("#808080")
.PagerSettings.Mode = PagerButtons.NextPrevious
.PagerSettings.NextPageText = "Next"
.PagerSettings.PreviousPageText = "Prev"
.HeaderStyle.CssClass = foundUserHeadStyle
.RowStyle.CssClass = foundUserEvenRows
.AlternatingRowStyle.CssClass = foundUserOddRows
.Columns.Clear()
Dim SelectUserTF As New TemplateField
With SelectUserTF
.HeaderText = "Add"
.ItemStyle.Wrap = False
.ItemTemplate = New CheckBoxTemplate()
End With
.Columns.Add(SelectUserTF)
End With
別のオプションは、行の作成イベントでこれを行うことです。
Protected Sub gv_rowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles myGridView.RowCreated
Try
Dim myDDL As New DropDownList
Dim myCollection As New ListItemCollection
With myCollection
Dim newItem As New ListItem
newItem.Text = "item 1"
newItem.Value = "1"
.Add(newItem)
End With
e.Row.Cells(0).Controls.Add(myDDL)
Catch ex As Exception
Finally
End Try
end sub
これが役立つかどうか、または質問がある場合はお知らせください。