通过DataTable访问DataGridView

时间:2016-03-20 20:38:30

标签: c# datagridview datatable

这是一个带有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);
        }
    }
}

1 个答案:

答案 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);
     }

希望有所帮助....