2017-07-06 84 views
0

我正在使用VB.NET和ASP.NET在網站上工作。我目前有循環的DropDownLists爲用戶提供輸入。如何使用FindControl查找下拉列表的值?

該設計是反覆出現的。這些DropDownLists從數據庫表中獲取它們的值,除了將這些重複值寫入數據庫之外,帶有Web接口的所有東西都在工作 - 這只是給你一些背景知識。

我已經設置每個DropDownList中的ID的,像這樣:

FrequencyList.ID = String.Concat("FreqList", DBReader(0)) 

這是一個循環,而閱讀DatabaseReader。

這是我有什麼用的問題(請注意,我簡化了代碼下來,使其更易於閱讀:

Dim i As Integer 
    DBCommand = New SqlCommand() 

    DBCommand.Connection = DBConnection 
    DBCommand.CommandType = Data.CommandType.StoredProcedure 
    DBCommand.CommandText = "StoredProcedureName" 
    DBConnection.Open() 
    For i = 1 To AspectTableLength 


     Dim ParamFrequencyID As SqlParameter = DBCommand.Parameters.Add("@nFrequencyID", SqlDbType.Int) 
     ParamFrequencyID.Value = FindControl("FreqList" & Convert.ToString(i)) 
     ParamFrequencyID.Direction = ParameterDirection.Input 
    Next 

FindControl("FreqList" & Convert.ToString(i))變量是不正確,因爲它沒有訪問的價值 - 並添加.SelectedItem.Value不起作用。

+0

所以FrequencyList是隻有一個選擇值下拉列表,說實話我不t知道你想完成什麼,用戶得到一個列表,然後他選擇一個值... – hardkoded

+0

@kblok - 我剛更新的問題 - 頻率列表創建了幾次,如FreqList1,FreqList2,FreqList3,高達像50 。用戶必須輸入這些數據50次,我需要從這些數據中讀取數據。我發現FindControl是我正在尋找的東西,但我似乎無法弄清楚其餘的東西。 –

+0

好酷多了 – hardkoded

回答

1

我得到的幫助來自開發商。

Dim MyControls As ControlCollection = Panel.Controls 
     Dim Number As Integer 'this is the same as "DBReader(0)" 

     For Each MyControl As Control In MyControls 
      If MyControl.ID Is Nothing Then 
      Else 
       If MyControl.ID.StartsWith("Span") Then 
        Number = Replace(MyControl.ID, "Span", "") 
        Dim Freq As DropDownList = PanelMain.FindControl(「FreqList」 & Number) 

        Dim ParamFrequencyID As SqlParameter = DBCommand.Parameters.Add("@nFrequencyID", SqlDbType.Int) 
        ParamFrequencyID.Value = Freq.SelectedIndex 
        ParamFrequencyID.Direction = ParameterDirection.Input 

        DBCommand.ExecuteNonQuery() 
        DBCommand.Parameters.Clear() 
       End If 
      End If 
     Next 

     DBConnection.Close() 
相關問題