1

データグリッドで繰り返されるVB.netドロップダウンボックスにデータを入力しようとしています。基本的に私はたくさんの画像を持っており、ユーザーはドロップダウンリストからアイテムの色を選択してデータベースに保存できるようにする必要があります。

Dim DDLPlayColorList = New DropDownList
DDLPlayColorList = dgImages.FindControl("DDLPlayColorList")

Using oConn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
    Using cmd As New SqlCommand("doGetAllPlayColours", oConn)
        cmd.CommandType = CommandType.StoredProcedure
        oConn.Open()
        Using dr As SqlDataReader = cmd.ExecuteReader()
            DDLPlayColorList.DataSource = dr
            DDLPlayColorList.DataTextField = "playColour"
            DDLPlayColorList.DataValueField = "playColour"
            DDLPlayColorList.DataBind()
        End Using
    End Using
End Using

findcontrol関数を使用してコントロールを見つけてバインドしようとしましたが、違いはありません。エラーは

DDLPlayColorList'は'manager_imagecolouring'のメンバーではありません。

これは私のDataGridです:

<asp:DataGrid ID="dgImages" runat="server" Width="300" AutoGenerateColumns="false" ItemStyle-Width="300" ItemStyle-BorderWidth="3px">
    <Columns>
        <asp:TemplateColumn ItemStyle-BackColor="#eaeaea" ItemStyle-Width="100">
            <ItemTemplate>
                <a href="image.aspx?libid=<%#Container.DataItem("id")%>">
                    <asp:Image ID="imgCategoryThumb" CssClass="lightbox-thumb" runat="server" Height="100" Width="100" ImageUrl='<%#Container.DataItem("path")%>' AlternateText="" />
                </a>
                <asp:DropDownList id="DDLPlayColorList" runat="server" CssClass="textfield">
                </asp:DropDownList>
            </itemtemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>
4

1 に答える 1

1

これを試して:

Dim DDLPlayColorList As DropDownList = CType(dgImages.FindControl("DDLPlayColorList"), DropDownList)

If DDLPlayColorList IsNot Nothing Then
    Using oConn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
        Using cmd As New SqlCommand("doGetAllPlayColours", oConn)
            cmd.CommandType = CommandType.StoredProcedure
            oConn.Open()
            Using dr As SqlDataReader = cmd.ExecuteReader()
                DDLPlayColorList.DataSource = dr
                DDLPlayColorList.DataTextField = "playColour"
                DDLPlayColorList.DataValueField = "playColour"
                DDLPlayColorList.DataBind()

            End Using
        End Using
    End Using    
End If

データバインディング時に複数のドロップダウンのIDを設定します。

private void OnItemDataBound(object sender, DataGridItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Dim DDLPlayColorList As DropDownList = CType(e.Item.FindControl("DDLPlayColorList"), DropDownList)
        DDLPlayColorList.ID = "DDLPlayColorList" & e.RowIndex.ToString()
    }
}
于 2012-04-05T12:26:33.783 に答える