这是一个带有datagridview" dg1"的简单表单。和按钮" cmdShow"。 dg1没有连接到任何外部数据库,只有2列。
单击该按钮应显示输入的数据。
程序执行在foreach语句中停止,使用" System.NullReferenceException"。 检查" dt"在调试模式下它确实是NULL。
我是否忘记了某些内容,或者我误解了" DataTable dt = dg1.DataSource作为DataTable;" ?
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 :(得分:0)
在您的代码中,您尝试将'dt'设置为引用dg1.DataSource但是您没有在任何地方将dg1.DataSource设置为DataTable ....我假设您只是手动将数据输入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);
}
希望有所帮助....