Benutzer mit den meisten Antworten
Fehlermeldung: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Frage
-
Ich habe immer noch Probleme, im Gridview über einen Button Werte auszulesen und zu bearbeiten.
z.b. selectierte Werte aus einer Listbox z.B.
Ich habe folgendes Script als Grundlage genommen
http://www.codeproject.com/KB/dotnet/AccessingControlsInsideGr.aspx
Ich habe folgendes Event
Protected Sub btnListEinfuegen_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim sc As StringCollection = New StringCollection
' --- GridviewRows
For Each row As GridViewRow In grid.Rows
'Dim textBoxText As String = _
' CType(row.FindControl("id"), TextBox).Text
'If (Not textBoxText Is Nothing) Then
' Response.Write(textBoxText)
'End If
Dim myListBox As ListBox = _
CType(row.FindControl("ListNichtInDetail"), ListBox)
For Each selectedItem As ListItem In myListBox.Items
If selectedItem.Selected Then
'Response.Write(selectedItem.Value)
sc.Add(selectedItem.Text)
End If
Next
Next
Dim btn As LinkButton = CType(sender, LinkButton)
Dim CommandName As String = btn.CommandName
Dim comText As String = btn.CommandArgument.ToString
insertRecords(sc, comText)
'grid.EditIndex = 0
End Sub
Hier der Scirptcode des Buttons
<asp:Button ID="btnListEinfuegen" CommandArgument='<%# bind("id") %>'
OnClick="btnListEinfuegen_Click" runat="server" Text=">>" />
Und hier der Scirptcode der Listbox
<asp:ListBox ID="ListNichtInDetail" SelectionMode="Multiple"
runat="server" DataSourceID="odsNichtInDetail" DataTextField="Detail"
DataValueField="detailID" Height="200px"></asp:ListBox>
<asp:ObjectDataSource ID="odsNichtInDetail" runat="server"
SelectMethod="GetPhdsNichtInDetail"
TypeName="Samples.AspNet.ObjectDataSource.phds"
OldValuesParameterFormatString="original_{0}">
<SelectParameters>
<asp:ControlParameter ControlID="id" Name="id"
Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
Es kommt jetzt folgender Fehler
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
in dieser Zeile
For Each selectedItem As ListItem In myListBox.Items
Was mache ich falsch?
Ich lese seit Stunden Einträge zu dieser Fehlermeldung. Der Debugger sagt, ich müsste New einfügen, aber wo?
Liebe Grüße, die Luzie!
Antworten
-
Hallo Luzie,
nur irgendwo New einfügen bringt Dich bei der Lösung Deines Problems sicher nicht weiter. Du möchtest ja keine neue Instanz Deiner ListBox, sondern die in Deiner Seite bzw. in Deinem Grid, wenn ich Deinen Code richtig interpretiere. Wenn Du hier eine NullReferenceException bekommst, mag das daran liegen, dass die Anweisung
Dim myListBox As ListBox = CType(row.FindControl("ListNichtInDetail"), ListBox)
Deine ListBox nicht findet, also myListBox in der nachfolgenden Anweisung Nothing ist. Hier müsstest Du klären, warum er die ListBox nicht finden kann. Hierfür wäre der Aufbau Deines Grids von Interesse, um Dir da spezifischer helfen zu können. Wenn es Zeilen gibt die keine ListBox enthalten, würde es ausreichen, wenn Du vor der Ausführung der For Schleife überprüfst, ob myListBox auf eine gültige Objektinstanz verweist:
If myListBox IsNot Nothing Then
For Each selectedItem As ListItem In myListBox.Items
...
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Thorsten DörflerEditor Sonntag, 20. Dezember 2009 20:06
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 07:15
Alle Antworten
-
Hallo Luzie,
nur irgendwo New einfügen bringt Dich bei der Lösung Deines Problems sicher nicht weiter. Du möchtest ja keine neue Instanz Deiner ListBox, sondern die in Deiner Seite bzw. in Deinem Grid, wenn ich Deinen Code richtig interpretiere. Wenn Du hier eine NullReferenceException bekommst, mag das daran liegen, dass die Anweisung
Dim myListBox As ListBox = CType(row.FindControl("ListNichtInDetail"), ListBox)
Deine ListBox nicht findet, also myListBox in der nachfolgenden Anweisung Nothing ist. Hier müsstest Du klären, warum er die ListBox nicht finden kann. Hierfür wäre der Aufbau Deines Grids von Interesse, um Dir da spezifischer helfen zu können. Wenn es Zeilen gibt die keine ListBox enthalten, würde es ausreichen, wenn Du vor der Ausführung der For Schleife überprüfst, ob myListBox auf eine gültige Objektinstanz verweist:
If myListBox IsNot Nothing Then
For Each selectedItem As ListItem In myListBox.Items
...
Thorsten Dörfler
Microsoft MVP Visual Basic- Als Antwort vorgeschlagen Thorsten DörflerEditor Sonntag, 20. Dezember 2009 20:06
- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 07:15
-
Hallo Thorsten,
Dank Dir für die Antwort.
Genau das wars, es läuft jetzt, danke!
Liebe Grüße, die Luzie!- Als Antwort vorgeschlagen Thorsten DörflerEditor Sonntag, 20. Dezember 2009 20:06
- Nicht als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 22. Dezember 2009 07:15