listbox添加的问题?

zrtqx 2008-06-11 03:42:41
有3个listbox listbox1 listbox2 listbox3
listbox1是省的信息 listbox2是对应市的信息 现在前面2个联动好用 但是 我想点button实现把listbox2的值添到listbox3 中 加了如下代码 不好用 只添加 第一个省的市的信息 请高手指点下 应该怎么做才实现选完省信息对应的市添到listbox3中呢
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
Dim i As Integer
For i = 0 To (Me.listbox2.Items.Count) - 1
If Me.listbox2.Items(i).Selected = True Then

If Me.Listbox3.Items.Contains(Me.listbox2.Items(i)) = False Then

Listbox3.Items.Add(Me.listbox2.Items(i))
End If
End If
Next i
End Sub
...全文
174 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zrtqx 2008-06-20
  • 打赏
  • 举报
回复
好久了 大家帮帮忙把
zrtqx 2008-06-12
  • 打赏
  • 举报
回复
不知道要怎么写
zrtqx 2008-06-12
  • 打赏
  • 举报
回复
谁会给个例子什么的可以么 不知道应该怎么做
cpp2017 2008-06-11
  • 打赏
  • 举报
回复
不用上面的代码了。怎么联动?

查数据库,绑定listbox2
条件就是 省=listbox1的选中的值,这里应该是单选吧?考虑用dropdownlsit
zrtqx 2008-06-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cpp2017 的回复:]
HTML代码:
<asp:Listbox ID="Listbox1" runat="server" OnSelectedIndexChanged="Listbox 1_SelectedIndexChanged" AutoPostBack="True">
CS代码:
protected void Listbox1_SelectedIndexChanged(object sender, EventArgs e)
{
这里根据listbox1的selectedvalue来绑定listbox2
}
[/Quote]

要是着样联动的话 就不用我上面的代码了把? 怎么联动。。。
cpp2017 2008-06-11
  • 打赏
  • 举报
回复
HTML代码:
<asp:Listbox ID="Listbox1" runat="server" OnSelectedIndexChanged="Listbox 1_SelectedIndexChanged" AutoPostBack="True">
CS代码:
protected void Listbox1_SelectedIndexChanged(object sender, EventArgs e)
{
这里根据listbox1的selectedvalue来绑定listbox2
}
cpp2017 2008-06-11
  • 打赏
  • 举报
回复
selectedindexchanged 就是选择listbox1时触发的服务器事件,将litbox1设成autopostback="true"
就会触发这个事件。

zrtqx 2008-06-11
  • 打赏
  • 举报
回复
大哥们详细给讲讲把 不会写
zrtqx 2008-06-11
  • 打赏
  • 举报
回复
selectedindexchanged 是什么事件 没用过
wo594261 2008-06-11
  • 打赏
  • 举报
回复
直接绑定的话
把值取出来然后赋值给list3
cpp2017 2008-06-11
  • 打赏
  • 举报
回复
你是用的客户端的连动,不能保存listbox2的状态.
所以出现这种情况,简单的做法是在服务器端连动,
将 listbox1的autopostback设为true,在selectedindexchanged事件中联动,这样才能保存状态,

否则用上面的方法还要在Page_load中重新根据listbox1的选项再生成listbox2的选项,然后根据Request.Form["listobx2的值来设置listbox2的选中的项.
zrtqx 2008-06-11
  • 打赏
  • 举报
回复
哦 联动是着样的 也是在网上找的
'建立数据库连接
Dim conn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("connectionString")) '如果设置了web.config,也可以从web.config中读取数据库连接字符串
conn.Open()
Dim cmd As SqlCommand = New SqlCommand
cmd.Connection = conn

'=====================================================================================
'生成客户端脚本控制的联动菜单
'查询Tb_Province表获得所有的省份
Dim sqlstr As String = "SELECT zhuid, zhuname FROM zhulm order by zhuid"
cmd.CommandText = sqlstr
Dim sqlda As SqlDataAdapter = New SqlDataAdapter(cmd)
'建立临时表存储省份数据
Dim Province As DataTable = New DataTable
sqlda.Fill(Province)
'Response.Write("将省份数据绑定到DropDownList1控件")
'Response.End()

'将省份数据绑定到DropDownList1控件
listbox1.DataSource = Province
listbox1.DataValueField = "zhuid"
listbox1.DataTextField = "zhuname"
If Not IsPostBack Then listbox1.DataBind()

'获取省份的个数
Dim ProvinceNum As Integer = Province.Rows.Count()

'使用StringBuilder构造含客户端控制脚本的字符串
Dim sbscript As New System.Text.StringBuilder
sbscript.Append("<script><!--")
sbscript.Append(Environment.NewLine & "var group=new Array(" & ProvinceNum & ");" & Environment.NewLine & "for (i=0; i<" & ProvinceNum & "; i++){group[i] = new Array()}" & Environment.NewLine)
'循环从省份临时表中取出一个省份,然后在数据库中查询此省份下的城市
Dim i As Integer
Dim j As Integer
Dim tempclass As DataTable
Dim CityNum As Integer


For i = 0 To ProvinceNum - 1
sqlstr = "SELECT fuid, funame FROM fulm WHERE Left(zhuid,2) = '" & Province.Rows(i)(0) & "' order by fuid"
cmd.CommandText = sqlstr
sqlda = New SqlDataAdapter(cmd)
tempclass = New DataTable
sqlda.Fill(tempclass)
CityNum = tempclass.Rows.Count()
'Response.Write("省份:" & Province.Rows(i)(0) & "有市" & CityNum & "个<br>")
'将读取到的城市数据放入客户端脚本中
For j = 0 To CityNum - 1
sbscript.Append("group[" & i & "][" & j & "]=new Option(""" & tempclass.Rows(j)(1) & """,""" & tempclass.Rows(j)(0) & """);" & Environment.NewLine)
Next
Next

'加入客户端脚本控制代码
sbscript.Append(Environment.NewLine & "function Redirect(x){" & Environment.NewLine & "for (m=Form1.listbox2.options.length-1;m>0;m--){Form1.listbox2.options[m]=null}")
sbscript.Append(Environment.NewLine & "if (group[x].length==0){")
sbscript.Append(Environment.NewLine & "Form1.listbox2.options[0]=new Option('---请选择---','无')}")

sbscript.Append(Environment.NewLine & "for (i=0;i<group[x].length;i++){" & Environment.NewLine & "Form1.listbox2.options[i]=new Option(group[x][i].text,group[x][i].value)}")
sbscript.Append(Environment.NewLine & "Form1.listbox2.options[0].selected=true;Form1.classid.value=Form1.listbox2.options[0].value;}")

sbscript.Append(Environment.NewLine & "function choose(x){Form1.classid.value=Form1.listbox2.options[x].value;}")
sbscript.Append(Environment.NewLine & "-->")
sbscript.Append("<")
sbscript.Append("/")
sbscript.Append("script>")

'注册客户端脚本,将脚本内容写入客户端输出流
Dim strscript As String = sbscript.ToString()

If (Not IsClientScriptBlockRegistered("clientScript")) Then
RegisterClientScriptBlock("clientScript", strscript)
End If
'=====================================================================================

'初始化DropDownList2中的内容
sqlstr = "SELECT fuid,funame FROM fulm WHERE (Left(zhuid,2) = '" & Province.Rows(0)(0) & "')"
cmd.CommandText = sqlstr
sqlda = New SqlDataAdapter(cmd)

Dim dtCity As DataTable = New DataTable
sqlda.Fill(dtCity)

listbox2.DataSource = dtCity
listbox2.DataValueField = "fuid"
listbox2.DataTextField = "funame"
If Not IsPostBack Then listbox2.DataBind()

sqlda.Dispose()
cmd.Dispose()
conn.Close()
cpp2017 2008-06-11
  • 打赏
  • 举报
回复
你的联动有问题,发代码上来看.
zrtqx 2008-06-11
  • 打赏
  • 举报
回复
LS的不好用哦。为什么我选listbox1里的值 点击button listbox2都是默认显示listbox1是1的值?
amandag 2008-06-11
  • 打赏
  • 举报
回复
循环倒着写看看

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
Dim i As Integer
For i = Me.listbox2.Items.Count - 1 To 0 Step -1
If Me.listbox2.Items(i).Selected = True Then
If Me.Listbox3.Items.Contains(Me.listbox2.Items(i)) = False Then
Listbox3.Items.Add(Me.listbox2.Items(i))
End If
End If
Next i
End Sub

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧