Link to home
Start Free TrialLog in
Avatar of Andrew
AndrewFlag for United States of America

asked on

DetailsView dropdownlist selected value?

Hello, having trouble figuring out how to properly assign a selected value to a data-driven dropdownlist control within a detailsview in Edit mode.  I have working the population of the dropdownlist with the data from the Plant table, but need to assign the selected value as the result of my first selectCommand (original value before any editing editing done)... Any help appreciated.
    Protected Sub DVSeedTracker_DataBound(sender As Object, e As System.EventArgs) Handles DVSeedTracker.DataBound

        Dim ddPlant As DropDownList = TryCast(DVSeedTracker.FindControl("ddPlant"), DropDownList)
        Dim row As DataRowView = TryCast(DVSeedTracker.DataItem, DataRowView)

        If ddPlant IsNot Nothing Then

            Using stCon As New SqlConnection(ConfigurationManager.ConnectionStrings("SeedTrackerConnectionString").ConnectionString)

                stCon.Open()

                Dim selectCommand1 As New SqlCommand("SELECT Plant FROM SeedTracker WHERE STID=@STID", stCon)
                selectCommand1.Parameters.AddWithValue("STID", sSTID)
                Dim sPlantID As String = CType(selectCommand1.ExecuteScalar, String)

                Dim selectCommand2 As New SqlCommand("SELECT PLID, PLANT, LID FROM Plant ORDER BY Plant DESC", stCon)
                Dim stDataReader As SqlDataReader = selectCommand2.ExecuteReader
                If stDataReader.HasRows Then
                    While stDataReader.Read()
                        If Not stDataReader.Item("PLID") Is DBNull.Value Then
                            Dim intPLID As Integer = stDataReader.Item("PLID")
                            Dim sPLant As String = stDataReader.Item("Plant")
                            Dim sLabID As String = stDataReader.Item("LID")
                            ddPlant.Items.Insert(0, sPLant)
                            If intPLID = sPlantID Then
                                ddPlant.SelectedIndex = ddPlant.Items.IndexOf(ddPlant.Items.FindByValue(row("PLID").ToString()))
                            End If
                        End If
                    End While
                End If

                stDataReader.Close()
                stCon.Close()
            End Using

        End If

    End Sub

Open in new window

User generated imageUser generated imageUser generated image
TIA,
Andrew
Avatar of Alan Warren
Alan Warren
Flag of Philippines image

Hi Andrew,

try modifying the SqlParameterCollection.AddWithValue Method to include the SQL parameter prefix '@'.

Change:
selectCommand1.Parameters.AddWithValue("STID", sSTID)
To:
selectCommand1.Parameters.AddWithValue("@STID", sSTID)

Alan
ASKER CERTIFIED SOLUTION
Avatar of Kumaraswamy R
Kumaraswamy R
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Andrew

ASKER

Thank you!