2016-03-20 15 views
-1

DataGridView "dg1"とボタン "cmdShow"を持つ単純なフォームがあります。 dg1は外部データベースに接続されておらず、2つの列しかありません。DataGridViewからDataTableにアクセス

ボタンをクリックすると、入力したデータが表示されます。

"System.NullReferenceException"でforeach文でプログラムの実行が停止します。 デバッグモードで "dt"をチェックすると、実際にはNULLになります。

"DataTable dt = dg1.DataSource as DataTable;"という行を誤解していましたか? ?あなたがdg1.DataSourceを参照するには「DT」を設定しようとしているが、あなたはどこかのDataTableにdg1.DataSourceを設定していないあなたのコードで

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace test2 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent();    
     } 

     private void cmdShow_Click(object sender, EventArgs e) 
     { 
      string m = ""; 
      DataTable dt = dg1.DataSource as DataTable; 
      foreach (DataRow row in dt.Rows) // error "System.NullReferenceException" on dt.Rows 
      { 
       m = m + row.Field<string>(0) + " " + row.Field<string>(1) + "\n"; 
      } 
      MessageBox.Show(m); 
     } 
    } 
} 
+0

があるのDataTableの値何ですか....

はこれを試してみてください....あなたのコードのそのビットを参照してくださいカントあなたはデータテーブルに.. ..?また、設計時に設定されたdatagridview ..ですか?あなたはより多くの情報を提供できますか?データテーブルを繰り返したい場合は、少なくとも私たちに表示し、DataTabeleがロードされている場所と方法を表示する必要があります。 – MethodMan

+0

datagridview istは、実行時にユーザーによって手動で設定されます。 DataGridViewにデータを入力した後、データテーブル内のデータを処理したいと思います。 – Schnulli

+0

'DataGridView'データの反復については、Montyの答えを参照してください。 'DataTable'を生成するためには、新しい' DataTable'オブジェクトを作成し、そのデータを使ってデータを生成しなければなりません。 – OhBeWise

答えて

0

....私はあなたが単にDGVにデータを入力することを前提としてい手動で、我々は助け

private void cmdShow_Click(object sender, EventArgs e) 
    { 
     string m = ""; 
     foreach (DataGridViewRow row in dg1.Rows) // error "System.NullReferenceException" on dt.Rows 
     { 
      m = m + row.Cells[0].Value + " " + row.Cells[1].Value + "\n"; 
     } 
     MessageBox.Show(m); 
    } 

希望....

関連する問題