【问题标题】:How to find the value of a dropdownlist using FindControl?如何使用 FindControl 查找下拉列表的值?
【发布时间】:2017-12-10 09:11:31
【问题描述】:

我正在使用 VB.NET 和 ASP.NET 开发一个网站。我目前有重复的 DropDownLists 供用户提供输入。

设计是重复的。这些 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 不起作用。

【问题讨论】:

  • 所以 FrequencyList 是一个下拉列表,只有一个选定的值,老实说,我不知道您要完成什么,用户得到一个列表,然后他选择一个值...
  • @kblok - 我刚刚更新了问题 - 频率列表被创建了几次,如 FreqList1、FreqList2、FreqList3,最多 50 个。用户必须输入此数据 50 次,我需要阅读来自这些事物中的每一个的数据。我发现 FindControl 是我正在寻找的东西,但我似乎无法弄清楚其余部分。
  • 酷多了

标签: asp.net vb.net oop drop-down-menu findcontrol


【解决方案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()

【讨论】:

    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多