【问题标题】:Cant set asp.net drop down list selected value from code behind无法从后面的代码中设置 asp.net 下拉列表中的选定值
【发布时间】:2018-07-26 17:10:39
【问题描述】:

我继承了一个必须更新的网站,但下拉列表出现问题。 一个页面上有两个 asp.net 下拉列表框。它们是 ddlReminderUser1 和 ddlReminderUser2。当页面加载一个函数时,会从 SQL DB 中提取数据并设置一些隐藏字段值。根据这些值设置下拉列表。

问题是有两个下拉列表,只有一个在设置选择的值,另一个没有。

这里是下拉列表的 HTML:

<asp:DropDownList runat="server" ID="ddlReminderUser1" AutoPostBack="true" CssClass="text-primary mt-1 width125" Visible="false" OnSelectedIndexChanged="ddlReminderUser1_SelectedIndexChanged"></asp:DropDownList>
&nbsp;
<asp:ImageButton ID="btnXUser1" runat="server" AlternateText="X" ImageUrl="~/Images/red-x-md15x15.png" ToolTip="Click to remove user 1" Visible="false" />
<br />
<asp:DropDownList runat="server" ID="ddlReminderUser2" AutoPostBack="true" CssClass="text-primary mt-1 width125" Visible="false" OnSelectedIndexChanged="ddlReminderUser2_SelectedIndexChanged"></asp:DropDownList>
&nbsp;
<asp:ImageButton ID="btnXUser2" runat="server" AlternateText="X" ImageUrl="~/Images/red-x-md15x15.png" ToolTip="Click to remove user 2" Visible="false" />

这是后面的代码(在 VB 中):

    'Set user names in ddl's
With ddlReminderUser1
    .Visible = True
    If getAdList(1) < 1 Then
        message = "Can't get user list from AD for Notifications.\nError: SQL104\nPlease contact the Help Desk for support."
        alertMessage(message)
        .SelectedIndex = 0
    Else
        .SelectedValue = hUser1.Value.ToString()
        btnXUser1.Visible = True
    End If
End With
'Check for second email address
If ddlNumberOfUsers.SelectedIndex = 2 Then
    ddlReminderUser2.Visible = True
    If getAdList(2) < 1 Then
        message = "Can't get user list from AD for Notifications.\nError: SQL104\nPlease contact the Help Desk for support."
        alertMessage(message)
        ddlReminderUser2.SelectedIndex = 0
    Else
        ddlReminderUser2.SelectedValue = hUser2.Value.ToString()
        btnXUser2.Visible = True
    End If

    'With ddlReminderUser2
    '    .Visible = True
    '    If getAdList(2) < 1 Then
    '        message = "Can't get user list from AD for Notifications.\nError: SQL104\nPlease contact the Help Desk for support."
    '        alertMessage(message)
    '        .SelectedIndex = 0
    '    Else
    '        .SelectedValue = hUser2.Value.ToString()
    '        btnXUser2.Visible = True
    '    End If
    'End With
End If

注释掉的部分得到完全相同的结果。我虽然也许 With 语句是我的问题,但它似乎不是。

函数 getAdList 工作正常,因为当我检查下拉列表时,它包含广告名称列表。

这就是我得到的:

说选择用户的下拉列表应该显示第二个名称,我验证它在数据库中,并且隐藏字段值正确。我错过了什么?我已经盯着这部分代码看了几个小时,但我什么都没做。

有人有想法吗?

提前谢谢...

【问题讨论】:

  • If ddlNumberOfUsers.SelectedIndex = 2 ...您确定所选索引是2 而不是1? (考虑到“Number of Users 1”可能是第一项)
  • 您是否设置了断点并单步执行了代码?您在单步执行时检查过hUser2.Value 的值吗?设置选定值时ddlReminderUser2 中是否有任何项目?是否有与您尝试设置的值相同的项目? getAdList() 是做什么的?
  • Schandensbegrenzer:是的,它是 2,因为该列表共有三个项目。 0、1 和 2。 Jon P:是的,我设置了一个 BP 并逐步执行了代码。它直接进入 ddlReminderUser2 的 Else 语句,但由于某种原因,它不会设置它。是的,列表在尝试设置之前已填充。我可以在页面加载后单击列表并查看名称列表。是的,我尝试将其设置为的项目在列表中具有匹配项。 getAdList 从 Active Directory 中提取用户名列表,它工作正常,因为该列表在页面加载后出现在两个下拉列表中。
  • 有人有什么想法吗??

标签: html asp.net vb.net dropdown


【解决方案1】:

这就是我最终想通的方法。

我将两个下拉列表框都更改为 .SelectedItem.Text = [What Ever Variable],现在效果很好。

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多