【问题标题】:selection in listbox not staying selected列表框中的选择未保持选中状态
【发布时间】:2013-03-08 15:10:26
【问题描述】:

我有一个列表框,其中包含在页面加载时填充的多个项目。列表框中的每一项都可以毫无问题地选择,除了最后一项。单击该选项时,选择会自动跳转到上面的两个项目。我似乎无法理解为什么会发生这种情况。它仅在选择最后一项时发生。列表框位于 ajax 选项卡容器内的更新面板中,但我不明白为什么会有所作为。我真的希望我没有遗漏一些明显的东西......

列表框:

 <asp:ListBox ID="availableServicesListBox" 
    runat="server" 
    class="formListBox" 
    AutoPostBack="True" 
    onselectedindexchanged="availableServicesListBox_SelectedIndexChanged"> 
 </asp:ListBox>

页面加载事件:

if (!Page.IsPostBack)         
{
      //populate from database    
}

selectedIndex 更改事件(用于自动回发):

protected void availableServicesListBox_SelectedIndexChanged(object sender, EventArgs e)
{
   if (availableServicesListBox.SelectedValue.Length > 10)
   {
      servicePanel.Visible = true;
      activePanel.Visible = true;                
   }

   else
   {
      servicePanel.Visible = false;
   }
}

【问题讨论】:

  • 当我遇到这种情况时,最后一项与列表中的另一项具有相同的值。因此,当您选择它时,它会选择具有该值的第一个项目,该值出现在列表的前面。需要检查的东西。
  • 如果问题不是@MikeC 指出的问题。 ,您应该更深入地了解“从数据库填充”,看看硬编码值是否也会出现问题
  • @MikeC。你是对的,文本属性不同,但某些项目的值是相同的,因为我在那里存储了查询结果。没想到这一点-谢谢!如果您将评论作为答案,我会标记它。
  • 完成,谢谢。我喜欢完全正确!

标签: c# asp.net listbox


【解决方案1】:

检查您的值列表并确保没有任何重复项。我过去看到的是您在列表的后面选择了一个值,但它是列表中前面项目的重复值。所以发生的情况是选择只是应用于第一个匹配项。

【讨论】:

    【解决方案2】:

    如果可能的话,我建议你使用客户端 javascript/Jquery 您可以将 onChange 事件添加到您的 listBox 并使用 jquery .Show()、.Hide() 方法来显示或隐藏您的面板。它也快得多。 唯一的问题是面板在视图中隐藏,同时使用 servicePanel.Visible = false;面板根本没有出现在页面上。

    【讨论】:

      猜你喜欢
      • 2016-06-19
      • 1970-01-01
      • 2013-06-08
      • 2017-08-30
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      相关资源
      最近更新 更多