日期:2014-05-18  浏览次数:20505 次

100分相赠!关于用绑定了数据的ListBox读取数据的问题
下面是我写的代码:
aspx文件代码:
<form id="form1" runat="server">
  <div>
  <asp:ListBox runat="server" CssClass="input_TextBox" ID="EquipmentName" Rows="1" />
  <br />
  <asp:Button ID="button1" runat="server" Text="提交" />
  <br />
  <asp:Label id="msg" runat="server" ForeColor="#FF0000" />
  </div>
  </form>

aspx.vb文件代码:
Imports System.Data
Imports System.Data.OleDb

Partial Class equipment_test
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
  Dim MyConn As OleDbConnection, MyAdpt As OleDbDataAdapter
  Dim MyDs As DataSet, MySql As String

  MyConn = New OleDbConnection(ConfigurationManager.AppSettings("AccessString") & _
  System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings("DataBase")))
  MyConn.Open()

  MySql = "Select * from Equipment_Type order by id"
  MyAdpt = New OleDbDataAdapter(MySql, MyConn)
  MyDs = New DataSet
  MyAdpt.Fill(MyDs, "Equipment_type")

  EquipmentName.DataSource = MyDs.Tables("equipment_type")
  EquipmentName.DataTextField = "EquipmentsName"
  EquipmentName.DataValueField = "EquipmentsID"
  EquipmentName.DataBind()
  End Sub

  Protected Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
  msg.Text = EquipmentName.SelectedItem.Text
  End Sub
End Class
运行该段代码时,系统提示:未将对象引用设置到对象的实例
在调试的时候,系统提示:
用户代码未处理 NullReferenceException
排错提示:
使用“new”关键字创建对象实例。在调用方法前通过检查确定对象是否为空。

我该怎么办?
谢谢!

------解决方案--------------------

对VB.net不熟悉哈.
只能提供点思路:

估计是
MyConn = New OleDbConnection(ConfigurationManager.AppSettings( "AccessString ") & _ 
System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings( "DataBase "))) 
这个有错了,你跟踪一下看看就知道了

还有
MyDs = New DataSet  //这里VB.net的语法对吗
------解决方案--------------------
你有在listbox中选择一个吗?

listbox默认好像一个也不选的吧。。

要选择一个才可以啊,如果允许选多个的话,你要组合处理后再输出的。。
------解决方案--------------------
如果是运行页面的时候就出现了异常,看看下面的代码:
MyAdpt.Fill(MyDs, "Equipment_type ") 

EquipmentName.DataSource = MyDs.Tables( "equipment_type ") 
你fill的时候命名的虚拟表名和你引用的不一致,引用的时候变为小写的E了

如果是提交的时候出现的问题,可以参考楼上的说法,有可能是因为你没有选择listbox中的项的原因,默认情况下它的SelectItem应该是空的吧。

------解决方案--------------------
断点调试,看看是那个变量没有实例化?
------解决方案--------------------
MyDs = New DataSet --这句明显错误+()


在查询分析器看看Select * from Equipment_Type order by id有没有数据

有没有EquipmentsName & EquipmentsID字段

Connection 有没有错,能Open()吗?

最后用断点调试一下...

ps:为什么不用datareader?
------解决方案--------------------
绑定的时候
 if notispostback then
'这边 绑定
end if 

不然,你点button的时候,页面又刷了一下