2012-01-01 4 views
1

私は簡単な質問であると思われるものを持っていますが、私はそれを見つけようとしています。SQL ServerからListViewにデータセットを介してリストをロードするにはどうすればよいですか?

私はListViewを持っているフォームを持っています。このリストビューでは、SQL Server 2008のデータベーステーブルのデータを入力したいと考えています。

public void LoadList() 
{ 
    DataTable dtable = budget_MainDataSetReceipt.Tables["Receipt"]; 
    listView1.Items.Clear(); 

    for (int i = 0; i < dtable.Rows.Count; i++) 
    { 
     DataRow drow = dtable.Rows[i]; 

     if (drow.RowState != DataRowState.Deleted) 
     { 
     ListViewItem lvi = new ListViewItem(drow["ReceiptID"].ToString()); 
     lvi.SubItems.Add(drow["DateCleared"].ToString()); 
     lvi.SubItems.Add(drow["CategoryID"].ToString()); 
     lvi.SubItems.Add(drow["Amount"].ToString()); 
     lvi.SubItems.Add(drow["Store"].ToString()); 
     lvi.SubItems.Add(drow["DateEntered"].ToString()); 

     listView1.Items.Add(lvi); 
     } 
    } 
} 

は私がオブジェクト

エラーのインスタンスに設定されていない

オブジェクト参照を取得しておくと、私はその理由を把握することはできません。私のデータベースには約5行のデータがありますので、リストビュー内に5行のデータがあるはずです。

誰かが私に行方不明を教えてもらえますか?それが役に立つとすればもっとコードを投稿することができます。

私はいくつかの方法で LoadList()メソッド呼び出ししようとしている

:私は

this.LoadList(); 
this.Form1.LoadList();` 
次の構文を試してみました InitializeComponent()方法
  • でメソッド自体

    • 私はこれのDataTableには次のように入力し、初期化してみました:

      DataTables dt = new DataTables //did not work 
      
  • +0

    ヌル参照例外はどの欄にありますか?いくつかのサンプルデータを表示できますか? –

    +0

    次のエラーが表示されます。 'DataTable dtable = budget_MainDataSetReceipt.Tables [" Receipt "]' – Phoenix

    +1

    これは、 'budget_MainDataSetReceipt'がnullであることを意味します。 – Amy

    答えて

    2

    私の勘では、次のようになります。あなたは、彼らが存在し、nullではないよ、あなたのDataRow内のすべての列のために想定している - それは危険な仮定のビットです。

    私は、文字列を返す前にDBNullをチェックする方法を使用するように割り当てを変更します

    public string SafeGetString(DataRow row, string columnName) 
    { 
        if(row[columnName] != null && row[columnName] != DBNull.Value) 
        { 
         return row[ColumName].ToString(); 
        } 
    
        return string.Empty; 
    } 
    

    ので、あなたは次のようになり可能性:のいずれかの場合、

    ListViewItem lvi = new ListViewItem(SafeGetString(drow, "ReceiptID")); 
    lvi.SubItems.Add(SafeGetString(drow, "DateCleared")); 
    // and so forth 
    

    この道を列にNULLが含まれていると、表示されているエラーの原因となるNULL.ToString()に実行されずに、空の文字列が返されます。

    +0

    +1は、存在しない列を持つヒントですが、彼のコメントでは、 'DataTable dtable = budget_MainDataSetReceipt.Tables ["Receipt"]'という行にエラーが表示されます。 – Sascha

    +0

    私が探していたことが、私が試みていた文脈では実際には起こり得ないことを実感しましたが、私は助けに感謝します。私はListViewItemをあなたが述べた方法で再表示し、それがうまくいくので、これが受け入れられる答えになります。私はもっ​​と多くのC#関連の質問があると確信しているので、私はすべての助けに感謝します。 – Phoenix