#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
. Не могу поверить, что это было так очевидно…