功能实现:左边ListBox的值复选,选中后,右边的ListBox将添加复选值,而左边将删除复选值。于是我遇到一个问题,大家讨论解决方法,还是我思路不对。
我个人遇到困难是不能删除复选值,只要删除了,索引出错。于是我就采用把左边复选值放到一个数组里面,这样在右边添加完复选值后,在删除左边,根据数组里存在的值。ArrayList arr = new ArrayList(); if(lst5.SelectedIndex != -1)
{
foreach(ListItem lst in lst5.Items)
if(lst.Selected)
{
bool val = true;
foreach(ListItem lst2 in lst6.Items)
{
if(lst.Text.ToString() == lst2.Text.ToString())
{
val=false;
break;
}
}
if(val)
{
lst6.Items.Add(lst.Text);
arr.Add(lst.Text.ToString().Trim());
}
}
for(int i=0;i<arr.Count;i++)
lst5.Items.Remove(arr[i].ToString());
lst5.SelectedIndex = -1;
lst6.SelectedIndex = -1;
}
我个人遇到困难是不能删除复选值,只要删除了,索引出错。于是我就采用把左边复选值放到一个数组里面,这样在右边添加完复选值后,在删除左边,根据数组里存在的值。ArrayList arr = new ArrayList(); if(lst5.SelectedIndex != -1)
{
foreach(ListItem lst in lst5.Items)
if(lst.Selected)
{
bool val = true;
foreach(ListItem lst2 in lst6.Items)
{
if(lst.Text.ToString() == lst2.Text.ToString())
{
val=false;
break;
}
}
if(val)
{
lst6.Items.Add(lst.Text);
arr.Add(lst.Text.ToString().Trim());
}
}
for(int i=0;i<arr.Count;i++)
lst5.Items.Remove(arr[i].ToString());
lst5.SelectedIndex = -1;
lst6.SelectedIndex = -1;
}
解决方案 »
- 上传问题
- GridView使用UpdatePanel后在IE中相应很慢百分送上,困扰了很久
- aspxdevexpress这样绑定数据库,哪错了?
- ASP代表什么意思??
- 关于javascript的访问被拒绝的问题
- 在VS2005编译完网站后,在本机上可以用,但是移植到别的机器上的时候出现server application unvailble
- 看了很多RSS2.0的介绍,还是有几个不明白的问题,大家评价一下我刚做的博客吧
- DataGrid分页时去到第二页之后时候,再搜索的时候,就因为CurrenPageIndex大于0而出错了
- 动态生成DataGrid的基本问题。
- 请教高手:来者送分!在html页面中如何得到一个文本框的值?第二个问题:如何确定DataGrid中的某一行是否选择上(如加一复选框,判断其是
- ASP.NET连接SQL SERVER的怪问题
- 准备笔试ASP.NET,那位有什么资料可以分享?
ArrayList arr = new ArrayList();if(lst5.SelectedIndex != -1)
{
foreach(ListItem lst in lst5.Items)
if(lst.Selected)
{
bool val = true;
foreach(ListItem lst2 in lst6.Items)
{
if(lst.Text.ToString() == lst2.Text.ToString())
{
val=false;
break;
}
}
if(val)
{
lst6.Items.Add(lst.Text);
arr.Add(lst.Text.ToString().Trim());
}
}
for(int i=0;i<arr.Count;i++)
lst5.Items.Remove(arr[i].ToString()); lst5.SelectedIndex = -1;
lst6.SelectedIndex = -1;
}
求解决~
Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 " '该调用是 Web 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub
Protected WithEvents ListBox1 As System.Web.UI.WebControls.ListBox
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents ListBox2 As System.Web.UI.WebControls.ListBox
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents LinkButton1 As System.Web.UI.WebControls.LinkButton '注意: 以下占位符声明是 Web 窗体设计器所必需的。
'不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
'不要使用代码编辑器修改它。
InitializeComponent()
End Sub#End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
bindlb()
End If
End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim arrl As ArrayList = New ArrayList
For i As Integer = 0 To ListBox1.Items.Count - 1
If ListBox1.Items(i).Selected = True Then
ListBox2.Items.Add(ListBox1.Items(i))
ListBox2.SelectedIndex = -1
arrl.Add(ListBox1.Items(i))
End If
Next
If arrl.Count >= 1 Then
For j As Integer = 0 To arrl.Count - 1
ListBox1.Items.Remove(arrl.Item(j))
Next
End If
End Sub Sub bindlb()
Dim conn As SqlClient.SqlConnection = New SqlClient.SqlConnection(ConfigurationSettings.AppSettings("shujuku"))
Dim cmd As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter("select id,fenshu from test_fs", conn)
Dim ds As DataSet = New DataSet
cmd.Fill(ds, "tab")
ListBox1.DataSource = ds.Tables("tab")
ListBox1.DataTextField = "fenshu"
ListBox1.DataValueField = "id"
ListBox1.DataBind()
End SubEnd Class
如下示例:页面代码
-----------------------
<asp:ListBox id="ListBox1" runat="server" Width="192px" Height="182px" SelectionMode="Multiple"></asp:ListBox>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
<asp:ListBox id="ListBox2" runat="server" Width="184px" Height="184px" SelectionMode="Multiple"></asp:ListBox></FONT>后台关键代码
-----------------------
int mycount = this.ListBox1.Items.Count;
for(int i=mycount-1;i>=0;i--)
{
if(this.ListBox1.Items[i].Selected)
{
this.ListBox2.Items.Add(this.ListBox1.Items[i]);
this.ListBox1.Items.Remove(this.ListBox1.Items[i]);
}
}
并且,两个列表框必须均为多选
一直进入了个误区。还有一问题
当ListBox里面Items的Text跟Values不同时,Remove方法好像不行
只能用Removeat方法来移出选项吗?
重新整理。测试成功! if(lst5.SelectedIndex != -1)
{
for(int i=lst5.Items.Count-1;i>=0;i--)
if(lst5.Items[i].Selected)
{
bool val = true;
foreach(ListItem lstitm in lst6.Items)
{
if(lst5.Items[i].Text.ToString() == lstitm.Text.ToString())
{
val=false;
break;
}
}
if(val)
{
lst6.Items.Add(lst5.Items[i]);
lst5.Items.Remove(lst5.Items[i]);
}
} lst5.SelectedIndex = -1;
lst6.SelectedIndex = -1;
}
{
int count=m_list.Items.Count;
int index=0;
for(int i=0;i<count;i++)
{
ListItem Item=m_list.Items[index];
if(m_list.Items[index].Selected==true)
{
q_list.Items.Add(Item);
m_list.Items.Remove(Item);
index--;
}
index++;
}
}
这是一个button的check事件,试一试