asp.net 如何在不出现 NullReferenceException 错误的情况下将查询生成的列表框值传输到另一个列表框?
asp.net how do i transfer listbox values generated from a query to anoter listbox without a NullReferenceException error?
我想做的是通过查询在 ListBox 上生成数据,然后我可以 select 一些值,按下按钮并将这些值移动到另一个 ListBox。
当我尝试通过 selecting 值并按下按钮从 ListBox 移动值时,我收到以下错误消息:
System.NullReferenceException:'Object reference not set to an instance of an object.'
我认为这是因为我引用了该值并且我没有创建该值的实例(如果我错了请纠正我)
要解决此问题,我相信我可能必须实例化数组中的每个查询值以添加到列表框。
如果这是正确的,那么实现该数组的正确方法是什么?
我如何填充列表框
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
FillSitesListbox()
End Sub
Private Sub FillSitesListbox()
Try
dt = SQL.ExecQuery("SELECT s.Str_ID, s.Nm, d.str_grp_id, (Cast(s.Str_ID As varchar) + ' - ' + s.Nm + ' [ ' + Cast(d.str_grp_id As varchar) + ' ]' ) as IDDesc
FROM Retail_Store s left outer join store_group d on ( s.str_id = d.str_id )
ORDER BY s.Str_ID")
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
SitesListBox.DataTextField = "IDDesc"
SitesListBox.DataSource = dt
SitesListBox.DataBind()
End Sub
我如何在列表框之间移动值
Protected Sub FromSiteButton_Click(sender As Object, e As EventArgs) Handles FromSiteButton.Click
SitesListBox.Items.Add(StoresListBox.SelectedItem)
SitesListBox.Items.Remove(SitesListBox.SelectedItem)
End Sub
Protected Sub FromStoreButton_Click(sender As Object, e As EventArgs) Handles FromSTOREButton.Click
StoresListBox.Items.Add(SitesListBox.SelectedItem)
StoresListBox.Items.Remove(SitesListBox.SelectedItem)
End Sub
我如何执行查询
Public Function ExecQuery(query As String) As DataTable
Dim DBDT = New DataTable
Using DBCon As New SqlConnection(ConStr),
DBCmd As New SqlCommand(query, DBCon)
Params.ForEach(Sub(p) DBCmd.Parameters.Add(p))
Params.Clear()
DBCon.Open()
DBDT.Load(DBCmd.ExecuteReader)
End Using
Return DBDT
End Function
'Add Params
Public Sub AddParam(Name As String, Value As Object)
Dim NewParam As New SqlParameter(Name, Value)
Params.Add(NewParam)
End Sub
结束Class
看来移动物品的代码是错误的。
在第一次单击 (FromSiteButton_Click) 时,您将 StoresListBox 的 SelectedItem 添加到 SiteListBox,然后从 SitesListBox 中删除 SelectedItem。我认为您应该添加到 StoreListBox 并从 Sites 中删除该框的选定项目。同样的情况发生在移动 FromStore
无论如何,为了避免 NRE,您应该始终在使用之前测试您使用的参考变量是否为 Nothing
Protected Sub FromSiteButton_Click(sender As Object, e As EventArgs) Handles FromSiteButton.Click
If SitesListBox.SelectedItem IsNot Nothing Then
StoresListBox.Items.Add(SitesListBox.SelectedItem)
SitesListBox.Items.Remove(SitesListBox.SelectedItem)
End If
End Sub
Protected Sub FromStoreButton_Click(sender As Object, e As EventArgs) Handles FromSTOREButton.Click
If StoresListBox.SelectedItem IsNot Nothing Then
SitesListBox.Items.Add(StoresListBox.SelectedItem)
StoresListBox.Items.Remove(StoresListBox.SelectedItem)
End If
End Sub
我想做的是通过查询在 ListBox 上生成数据,然后我可以 select 一些值,按下按钮并将这些值移动到另一个 ListBox。
当我尝试通过 selecting 值并按下按钮从 ListBox 移动值时,我收到以下错误消息:
System.NullReferenceException:'Object reference not set to an instance of an object.'
我认为这是因为我引用了该值并且我没有创建该值的实例(如果我错了请纠正我)
要解决此问题,我相信我可能必须实例化数组中的每个查询值以添加到列表框。
如果这是正确的,那么实现该数组的正确方法是什么?
我如何填充列表框
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
FillSitesListbox()
End Sub
Private Sub FillSitesListbox()
Try
dt = SQL.ExecQuery("SELECT s.Str_ID, s.Nm, d.str_grp_id, (Cast(s.Str_ID As varchar) + ' - ' + s.Nm + ' [ ' + Cast(d.str_grp_id As varchar) + ' ]' ) as IDDesc
FROM Retail_Store s left outer join store_group d on ( s.str_id = d.str_id )
ORDER BY s.Str_ID")
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
SitesListBox.DataTextField = "IDDesc"
SitesListBox.DataSource = dt
SitesListBox.DataBind()
End Sub
我如何在列表框之间移动值
Protected Sub FromSiteButton_Click(sender As Object, e As EventArgs) Handles FromSiteButton.Click
SitesListBox.Items.Add(StoresListBox.SelectedItem)
SitesListBox.Items.Remove(SitesListBox.SelectedItem)
End Sub
Protected Sub FromStoreButton_Click(sender As Object, e As EventArgs) Handles FromSTOREButton.Click
StoresListBox.Items.Add(SitesListBox.SelectedItem)
StoresListBox.Items.Remove(SitesListBox.SelectedItem)
End Sub
我如何执行查询
Public Function ExecQuery(query As String) As DataTable
Dim DBDT = New DataTable
Using DBCon As New SqlConnection(ConStr),
DBCmd As New SqlCommand(query, DBCon)
Params.ForEach(Sub(p) DBCmd.Parameters.Add(p))
Params.Clear()
DBCon.Open()
DBDT.Load(DBCmd.ExecuteReader)
End Using
Return DBDT
End Function
'Add Params
Public Sub AddParam(Name As String, Value As Object)
Dim NewParam As New SqlParameter(Name, Value)
Params.Add(NewParam)
End Sub
结束Class
看来移动物品的代码是错误的。
在第一次单击 (FromSiteButton_Click) 时,您将 StoresListBox 的 SelectedItem 添加到 SiteListBox,然后从 SitesListBox 中删除 SelectedItem。我认为您应该添加到 StoreListBox 并从 Sites 中删除该框的选定项目。同样的情况发生在移动 FromStore
无论如何,为了避免 NRE,您应该始终在使用之前测试您使用的参考变量是否为 Nothing
Protected Sub FromSiteButton_Click(sender As Object, e As EventArgs) Handles FromSiteButton.Click
If SitesListBox.SelectedItem IsNot Nothing Then
StoresListBox.Items.Add(SitesListBox.SelectedItem)
SitesListBox.Items.Remove(SitesListBox.SelectedItem)
End If
End Sub
Protected Sub FromStoreButton_Click(sender As Object, e As EventArgs) Handles FromSTOREButton.Click
If StoresListBox.SelectedItem IsNot Nothing Then
SitesListBox.Items.Add(StoresListBox.SelectedItem)
StoresListBox.Items.Remove(StoresListBox.SelectedItem)
End If
End Sub