Announcement

Collapse
No announcement yet.

Probleme mit GetList() von IListSource und DataSet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit GetList() von IListSource und DataSet

    Hallo Forum,

    ich habe gerade ein Problem, das ich nicht gelöst bekomme. Folgenden Code habe ich:

    C#-Code:
    private IList InnerDataSource() {
    try {
    if (this.mDataSource is DataSet) {
    if (this.mDataMember != null && this.mDataMember.Length > 0) {
    return ((IListSource)(((DataSet)(mDataSource)).Tables[mDataMember])).GetList();
    } else {
    return ((IListSource)(((DataSet)(mDataSource)).Tables[0])).GetList();
    }
    } else if (this.mDataSource is IListSource) {
    return ((IListSource)(mDataSource)).GetList();
    } else {
    return ((IList)(mDataSource));
    }
    }
    catch (Exception e) {
    System.Windows.Forms.MessageBox.Show(e.ToString()) ;
    return null;
    }
    }

    Zur Designzeit läuft alles ohne Probleme! Es gibt auch keine Compilermeldung etc.

    Wenn ich die Anwendung dann allerdings starte, wird an folgender Stelle eine "Object reference is not set to an instance of an object" geworfen:

    C#-Code:
    return ((IListSource)(((DataSet)(mDataSource)).Tables[mDataMember])).GetList();

    Durch Debuggen habe ich herausgefunden, dass er die Table, die durch mDataMember angegeben wird, nicht finden kann. Ich frage mich allerdings, warum er die Table zur Designzeit finden kann, zur Laufzeit aber nicht.

    Hier ist mal die VB Methode, die ich nach C# portiert habe.

    Vielleicht hat dann ja jemand eine Idee, woran es liegen könnte:

    C#-Code:
    Private Function InnerDataSource() As IList
    If TypeOf mDataSource Is DataSet Then
    If Len(mDataMember) > 0 Then
    Return CType(CType(mDataSource, DataSet).Tables(mDataMember), _
    IListSource).GetList
    Else
    Return CType(CType(mDataSource, DataSet).Tables(0), _
    IListSource).GetList
    End If
    ElseIf TypeOf mDataSource Is IListSource Then
    Return CType(mDataSource, IListSource).GetList
    Else
    Return CType(mDataSource, IList)
    End If
    End Function

    Ich erhalte aber auch in der VB-Methode die gleiche Exception.

    Vielleicht hat ja jemand eine Idee, woran es liegen könnte.

    Gruß,
    Fabian

  • #2
    ist natürlich komisch!

    unter vb6 hatte ich das auch, dass ereignisse zur runtime anders abliefen als beim debuggen. bist du sicher, dass die tabelle schon gefüllt ist, wenn die liste abgerufen wird? wann wird das gemacht?

    b

    Comment


    • #3
      Komisch ist das auf jeden Fall.

      Nein, die Tabelle ist zu dem Zeitpunkt leer, wenn sie abgerufen wird. Das sollte aber doch kein Problem sein oder? Im Designer wird sie ja auch gefunden und die Spalte, die in der Tabelle sind, in der ListView angelegt. Nur zur Laufzeit halt nicht.

      Ist es ein Problem, wenn die Tabelle leer ist? Kann ich mir nicht so recht vorstellen

      Comment

      Working...
      X