C# 无法处理动态DataGridView的默认错误对话框(多个空值)

C# 无法处理动态DataGridView的默认错误对话框(多个空值),c#,winforms,datagridview,dbnull,C#,Winforms,Datagridview,Dbnull,工作简介: 我已经在按钮点击事件上填充了DataGridView。根据在文本框中输入的SQL查询,将填充DataGridView private void button1_Click(object sender, EventArgs e) { string strSQLQuery = textBox1.Text.Trim(); SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQLQuery, strCon)

工作简介:

我已经在按钮点击事件上填充了DataGridView。根据在文本框中输入的SQL查询,将填充DataGridView

private void button1_Click(object sender, EventArgs e)
{
        string strSQLQuery = textBox1.Text.Trim();

        SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQLQuery, strCon);
        SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
        DataTable dt = new DataTable();
        dt.Locale = System.Globalization.CultureInfo.InvariantCulture;
        dataAdapter.Fill(dt);
        dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
        dataGridView1.ReadOnly = true;
        dataGridView1.DataSource = dt;
        bool flag = false;
        if (!dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].IsNewRow)
        {
            foreach (DataGridViewCell cell in dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells)
            {
                if (cell.Value == System.DBNull.Value)
                    flag = true;
            }
        }
        if(flag)
             MessageBox.Show("Many cells are empty");
}
问题:

如果行中的任何列都不包含空值,则此操作非常有效。 但是,如果在行的任何单元格中发现一个或多个空值,我会得到消息框,许多单元格都是空的,就像我的代码中一样。当我尝试移动我用来显示更多列的水平滚动条时,会出现以下DataGridView默认错误对话框

尝试过的解决方案:

我尝试了以下解决方案。但没有人能解决这个问题。请考虑帮助解决这个问题。

-MSDN-DataGridViewDataErrorEventArgs类

-社交MSDN网站

-StackOverflow中的验证答案

-专家交流中的所有建议和验证答案

我还尝试使用以下方法避免出现此错误。但这似乎并不能解决问题

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
    e.Cancel = true;
}
初步信息

IDE:VisualStudio2010专业版

.Net:版本4.0

所用语言:C

数据库:SQL Server 2008


在不同的系统中尝试。这对我来说非常合适

还要清理和重建解决方案,并重新启动IDE。或者尝试清除系统的缓存、临时文件

IDE:Visual Studio 2013


.Net:4.0

该消息表明查询没有问题,只是绘制了一些图像。发布更多代码。你对返回的结果做了什么?某些字段中是否有图像?数据库中未存储图像。没有涉及其他基本代码。在windows窗体中,使用一个文本字段TextBox1、一个按钮buttonbutton1和一个datagriddataGridView1。当应用程序运行时,我在textbox1中手动输入query,说select*fromtable1并点击button1,这个button1\u-click方法触发并填充datagridview。表1中的一些单元格包含NULL,它显示的错误如图所示。我尝试了上面提到的所有尝试过的解决方案,但没有任何帮助来克服/抛出这个错误。您可以在IDE中尝试这些,然后面对相同的问题。您的问题是不可再现的,也许您应该发布其他内容,以便我们可以重现您得到的错误,如table1模式和一些虚构的数据。目前这个代码对我来说很好@Akbari-我尝试了不同版本的家庭系统。它很好用。谢谢在office中使用VS2010进行的第一次尝试中,当我查询一个具有多个列15+的表时,我在datagridview中移动了水平滚动条,当时我遇到了这个错误。