none
DataGrid内に設置されているDropDownListのリストをバインドしたい RRS feed

  • 質問

  • いつもお世話になっております。

    さとと申します。

     

    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 dv

        End 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 dr

        End 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

     

    どのようにプログラムを書いたら良いでしょうか?

     

     

    2007年6月19日 2:45

回答

  • 実際に試していませんが、以下のような感じになると思います。ただ、毎回CreateDataSourceを実行するのは無駄なので、一度作成した後はそれを使いまわした方がいいでしょう。

     

    Code Snippet

    If 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   

     

     

     

    2007年6月19日 4:30
    モデレータ

すべての返信

  • 実際に試していませんが、以下のような感じになると思います。ただ、毎回CreateDataSourceを実行するのは無駄なので、一度作成した後はそれを使いまわした方がいいでしょう。

     

    Code Snippet

    If 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   

     

     

     

    2007年6月19日 4:30
    モデレータ
  • trapemiya

     

    早速、回答をありがとうございました。

     

    提供して頂いたサンプルコードそのままでうまくいきました。

     

    2・3日悩んでいたのですっきりしました。

     

     

     

    2007年6月19日 8:36