Как получить выпадающий список для копирования данных из текстового поля?

#asp.net #vb.net #visual-web-developer-2010

#asp.net #vb.net #visual-web-developer-2010

Вопрос:

В настоящее время в моей веб-форме у меня есть каскадный выпадающий список, но пока я сосредоточен на 1-м выпадающем списке.

Вот код для загрузки списка.

 Private Sub FillLine() ' load 1st dropdown data

    Dim dt As New DataTable
    Dim strSql = "select distinct level1_id, [LCODE1]  ' | ' [LNAME1] as [LCODE1]" _
                      amp; " FROM [SQLIOT].[dbo].[ZVIEW_MCM_LEVEL_LOOKUP]"
    Using conn As New SqlConnection(ConStr),
        cmd As New SqlCommand(strSql, conn)
        conn.Open()
        dt.Load(cmd.ExecuteReader)
    End Using
    If dt.Rows.Count > 0 Then
        line.DataSource = dt
        line.DataTextField = "LCODE1" 
        line.DataValueField = "level1_id"

        line.DataBind()
        line.Items.Insert(0, "")
    End If

End Sub
  

И вот визуальное представление того, как выглядят данные, которые я извлекаю.

 | level1_id |    LCODE1     |
-----------------------------
|     1     |  A01 | Line 1 |
  

Я также хочу, чтобы выпадающий список автоматически загружался в правильном значении на основе строки запроса URL.

Мой план состоит в том, чтобы сначала загрузить значение в невидимое текстовое поле и указать выпадающему списку выбрать те же данные на основе этого текстового поля, используя событие загрузки страницы.

 'load textbox with query string info

Sub loadFrmQuery()

    Dim LID As String = Request.QueryString("LID")

    Dim cmd As New SqlCommand("SELECT level1_id " _
                            amp; ", level2_id " _
                            amp; ", level3_id " _
                            amp; "FROM [SQLIOT].[dbo].[ZVIEW_MCM_LEVEL_LOOKUP] " _
                            amp; "where [LEVEL3_ID] = '" amp; LID amp; "'", conn)

    conn.Open()

    Dim rdr As SqlDataReader = cmd.ExecuteReader

    While rdr.Read

        line_text.Text = rdr("level1_id")

        process_text.Text = rdr("level2_id")

        equip_text.Text = rdr("level3_id")

    End While

    conn.Close()

End Sub

'page load event

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    If Session("EmpID") Is Nothing Then

        Response.Redirect("~/Login.aspx")

    Else

        If Not IsPostBack Then 'whenever hv dropdownlist, need to have this in load sub, or else won't get ddl data.

            FillLine()
            loadFrmQuery()

            line.DataValueField = line_text.Text

        End If

    End If

End Sub
  

Но во время тестирования выпадающий список не загружается в data. Я попытался вызвать DataTextField и DataValueField из выпадающего списка, но ответа все равно не последовало. Что мне делать в этом случае?

Комментарии:

1. Является ли level1_id первичным ключом ZVIEW_MCM_LEVEL_LOOKUP?

2. В полной таблице SQL нет. Но в этом выборе, да.

3. На странице. Загрузить вас line.DataValueField = line_text.Text . Вы уже установили это свойство FillLine() с line.DataValueField = "level1_id" помощью, не имеет особого смысла сбрасывать его на содержимое этого текстового поля.

4. В то время я думал, что, используя эту строку, это означает, что я указываю выпадающему списку выбрать это значение в пределах его выбора. Если это приведет к сбросу содержимого списка, каким должен быть правильный метод?

5. я понял … это было line.selectedvalue . Не могу поверить, что это было так очевидно…