• 全部
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API
  • 问答

VB下拉列表框的选择项改变事件

nyxuem 程序员  2012-08-02 10:01:15
以下是我的某个窗体的加载和下拉框列表选择项改变事件
不写下拉框列表选择项改变事件时一切正常,省份正确读取并绑定到下拉框列表中,但
写了下拉框列表选择项改变事件后,就报错了,错误:从类型“DataRowView”到类型“Integer”的转换无效。对应红色字体

Private Sub ProviceCityForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim conStr As String
conStr = "Data Source=.;Initial Catalog=MyTestDB;Integrated Security=True"
Dim con As New SqlConnection(conStr)

'查询所有省份
Dim sql As String
sql = "SELECT * FROM [MyTestDB].[dbo].[provinceCity] WHERE ParentId = 0"
Dim adapter As New SqlDataAdapter(sql, con)
Dim ds As New DataSet()
adapter.Fill(ds)
'绑定所有省份下拉列表框
Me.cboProvice.DataSource = ds.Tables(0)
Me.cboProvice.DisplayMember = "Name"
Me.cboProvice.ValueMember = "ID"
End Sub

Private Sub cboProvice_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboProvice.SelectedIndexChanged
Dim conStr As String
conStr = "Data Source=.;Initial Catalog=MyTestDB;Integrated Security=True"
Dim con As New SqlConnection(conStr)

'查询所有省份
Dim pId As Integer
pId = Me.cboProvice.SelectedValue
Dim sql As String
sql = "SELECT * FROM [MyTestDB].[dbo].[provinceCity] WHERE ParentId = " & pId
Dim adapter As New SqlDataAdapter(sql, con)
Dim ds As New DataSet()
adapter.Fill(ds)
'绑定所有省份下拉列表框
Me.cboCity.DataSource = ds.Tables(0)
Me.cboCity.DisplayMember = "Name"
Me.cboCity.ValueMember = "ID"
End Sub
...全文
1642 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nyxuem 2012-08-07
回复ChataoCoding:这样写过后,执行到 Me.cboProvice.ValueMember = "ID"时,跳到
rv = Me.cboProvice.SelectedValue这句话,还是报错:无法将int32类型强制转换成DataRowView类型

回复hmc108:怎么删除cboProvice_SelectedIndexChanged的监听?具体代码有吗?
回复
nyxuem 2012-08-07
已解决,受ChataoCoding启发。谢谢大家。
回复
nyxuem 2012-08-06
谁知道怎么弄?
回复
hmc108 2012-08-06
在load的事件中,开始的地方删除cboProvice_SelectedIndexChanged的监听,在结束处在添加上
回复
ChataoCoding 2012-08-06
下拉框用绑定的话读出来的项类型是DataRowView.


Dim pId As Integer
Dim rv As DataRowView
rv = Me.cboProvice.SelectedValue
pId = rv("列名")

回复
nyxuem 2012-08-03
图片指: '绑定所有省份下拉列表框 下面的那句话:Me.cboProvice.DataSource = ds.Tables(0)
回复
nyxuem 2012-08-03
调试时,发现经过Load事件的这句话就跳到红色字体。
回复
nyxuem 2012-08-03
嗯,是的,是从数据库读出来的ID值。
回复
swinda009 2012-08-03
搞错了,没仔细看改为
回复
swinda009 2012-08-03
改为Me.cboProvice.text
回复
BossProgrammer 2012-08-02
Me.cboProvice.SelectedValue,这是你下拉框中选中的数据吧,是数字吗?
回复
发帖
VB
创建于2007-09-28

1.6w+

社区成员

VB技术相关讨论,主要为经典vb,即VB6.0
申请成为版主
帖子事件
创建了帖子
2012-08-02 10:01
社区公告
暂无公告