【问题标题】:list box manipulations列表框操作
【发布时间】:2010-08-23 12:35:21
【问题描述】:

我正在使用 asp.net 列表框。我有两个按钮,一个用于将项目添加到列表框,另一个用于删除。我正在使用 javascript 函数从列表框中删除项目。当我删除后添加到列表框时。被移除的项目也会被添加。

<asp:ListBox ID="sLstbox" runat="server" Width="250px" Height="150px" TabIndex="10"></asp:ListBox>

<asp:LinkButton ID="sLbtnAdd" runat="server" ></asp:LinkButton>&nbsp; 
<a href="#" id="hAncRemove" runat="server" onclick="fncRemoveItems();">Remove</a>    

function fncRemoveItems()
{
    var i;
    var strIDs="";
    var items = document.getElementById("sLstbox");
    alert(items.options.length);
    for (i = items.options.length - 1; i >= 0; i--)
    {
        if (items.options[i].selected)
            items.remove(i);
    }
}

输入代码

Protected Sub sLbtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles sLbtnAdd.Click

    Dim li As New ListItem
    li.Value = "1"
    li.Text = "test"
    sLstbox.Items.Add(li)
End Sub

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

    在这种情况下,您应该使用普通的

    使用普通的选择框(无论是否运行服务器),它应该非常简单。

    【讨论】:

      【解决方案2】:

      如果您想让您的生活更轻松并为您提供“AJAX”效果,只需将其全部放入 UpdatePanel 并在服务器端执行。如果你想使用 asp:ListBox,通过 javascript 操作它会很痛苦。

      这是一个适用于您的场景的带有 aspx 代码和代码隐藏实现的工作示例:

      <asp:UpdatePanel ID="yourUpdatePanel" runat="server">
          <ContentTemplate>
              <asp:ListBox ID="sLstbox" runat="server" Width="250px" Height="150px" TabIndex="10"></asp:ListBox> 
              <asp:LinkButton ID="sLbtnAdd" runat="server" OnClick="sLbtnAdd_Click" ></asp:LinkButton>&nbsp;  
              <asp:LinkButton ID="sLbtnRemove" runat="server"  OnClick="sLbtnRemove_Click"></asp:LinkButton>&nbsp;        
          </ContentTemplate>
      </asp:UpdatePanel>    
      

      在您的代码隐藏中:

      Protected Sub sLbtnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles sLbtnAdd.Click            
          Dim li As New ListItem      
          li.Value = "1"      
          li.Text = "test"      
          sLstbox.Items.Add(li)      
      End Sub 
      
      Protected Sub sLbtnRemove_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles sLbtnAdd.Click            
          For i As Integer = sLstbox.Items.Count - 1 To 0 Step -1
              If sLstbox.Items(i).Selected Then
                  sLstbox.Items.Remove(sLstbox.Items(i))
              End If
          Next
      End Sub 
      

      【讨论】:

      • 啊啊,你确定吗?从列表框中删除项目的新请求??
      • @Chris van de Steeg 我试图给他最简单的解决方案来替代您的答案。在他的案例中,新请求的成本与实施剪切和粘贴解决方案的成本相比可能无法衡量。 OP 将不得不权衡他的选择,因为我们都不知道范围/范围。
      • 我正在从服务器端删除并允许回发当前发生。
      • @skamale 所以你需要其他帮助吗?我提供的解决方案有效吗?你做了别的事吗?不确定您还在寻找什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 2020-09-22
      • 1970-01-01
      相关资源
      最近更新 更多