トップ回答者
DataGrid内に設置されているDropDownListのリストをバインドしたい

質問
-
いつもお世話になっております。
さとと申します。
DataGrid内に設置されているDropDownListのリストをバインドしたい
思っております。
Function CreateDataSource() As ICollection
Dim dt As DataTable = New DataTable()dt.Columns.Add(New DataColumn("TextField", GetType(String)))
dt.Columns.Add(New DataColumn("ValueField", GetType(String)))
dt.Rows.Add(CreateRow("使用部品", "使用部品", dt))
dt.Rows.Add(CreateRow("作業内容登録", "作業内容登録", dt))
dt.Rows.Add(CreateRow("進捗登録・確認", "進捗登録・確認", dt))
Dim dv As DataView = New DataView(dt)
Return dvEnd Function
Function CreateRow(ByVal Text As String, ByVal Value As String, ByVal dt As DataTable) As DataRow
Dim dr As DataRow = dt.NewRow()
dr(0) = Text
dr(1) = Value
Return drEnd Function
上記DataSourceをItemDataBoundイベントでDropdownListにバインドしたいのですが、方法がよくわかりません。
Protected Sub ItemsGrid_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)
???? = CreateDataSource()
???? = "TextField"
????= "ValueField"End Sub
どのようにプログラムを書いたら良いでしょうか?
回答
-
実際に試していませんが、以下のような感じになると思います。ただ、毎回CreateDataSourceを実行するのは無駄なので、一度作成した後はそれを使いまわした方がいいでしょう。
Code SnippetIf e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim ddl As DropDownList = DirectCast(e.Item.FindControl("DropdownList1"), DropDownList)
ddl.DataSource = CreateDataSource
ddl.DataValueField = "TextField"
ddl.DataTextField = "ValueField"
ddl.DataBind()
End If
すべての返信
-
実際に試していませんが、以下のような感じになると思います。ただ、毎回CreateDataSourceを実行するのは無駄なので、一度作成した後はそれを使いまわした方がいいでしょう。
Code SnippetIf e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
Dim ddl As DropDownList = DirectCast(e.Item.FindControl("DropdownList1"), DropDownList)
ddl.DataSource = CreateDataSource
ddl.DataValueField = "TextField"
ddl.DataTextField = "ValueField"
ddl.DataBind()
End If