-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);
}
}
}
があるのDataTableの値何ですか....
はこれを試してみてください....あなたのコードのそのビットを参照してくださいカントあなたはデータテーブルに.. ..?また、設計時に設定されたdatagridview ..ですか?あなたはより多くの情報を提供できますか?データテーブルを繰り返したい場合は、少なくとも私たちに表示し、DataTabeleがロードされている場所と方法を表示する必要があります。 – MethodMandatagridview istは、実行時にユーザーによって手動で設定されます。 DataGridViewにデータを入力した後、データテーブル内のデータを処理したいと思います。 – Schnulli
'DataGridView'データの反復については、Montyの答えを参照してください。 'DataTable'を生成するためには、新しい' DataTable'オブジェクトを作成し、そのデータを使ってデータを生成しなければなりません。 – OhBeWise