2017-07-06 33 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() 
相关问题