【问题标题】:Unable to Handle Default Error Dialog for Dynamic DataGridView (Multiple NULL values)无法处理动态 DataGridView 的默认错误对话框(多个 NULL 值)
【发布时间】:2016-10-24 00:29:15
【问题描述】:

工作简介:

我在button_click 事件上填充了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");
}

问题:

如果行中的所有列都不包含NULL 值,则此方法非常有效。 但是,如果在行的任何单元格中找到一个或多个 NULL 值,我会得到消息框 "Many cells are empty",就像我的代码中一样。当我尝试移动水平滚动条(我用来显示更多列)时,我得到以下DataGridView 默认错误对话框。

尝试过的解决方案:

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

LINK 1 - MSDN - DataGridViewDataErrorEventArgs

LINK 2 - 社交 MSDN 网站

LINK 3 - StackOverflow 中的已验证答案

LINK 4 - Experts-Exchange 中的所有建议和验证答案

我也尝试通过以下方法避免弹出此错误。但这似乎并不能解决问题。

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

初步信息

  • IDE:Visual Studio 2010 专业版

  • .Net: 4.0 版

  • 使用的语言: C#

  • 数据库:SQL Server 2008

【问题讨论】:

  • 该消息表明查询没有问题,但绘制了一些图像。发布更多代码。你对返回的结果做了什么?某些字段中有图片吗?
  • 没有图像存储在数据库中。不涉及其他基本代码。在windows窗体中,使用了一个文本字段(textBox1)、一个按钮(button1)和一个数据网格(dataGridView1)。当应用程序运行时,我在 textbox1 中手动输入查询(比如 select * from table1)并点击 button1,这个 button1_click() 方法会触发并填充 datagridview 。 table1 中的一些单元格包含 NULL 并显示错误(如图所示)。我尝试了所有提到的“TRIED SOLUTIONS”,但没有任何帮助克服/抛出这个错误。你可以在你的 IDE 中尝试这些并面临同样的问题。
  • 您的问题无法重现,也许您应该发布其他内容,以便我们重现您遇到的错误,例如 table1 架构和一些虚构数据。目前这段代码对我来说很好用!
  • @S.Akbari - 我尝试使用不同版本的家庭系统。它工作正常。谢谢。在我第一次在办公室试用 VS2010 时,当我查询一个包含多列 (15+) 的表时,我不得不在 datagridview 中移动水平滚动条,当时我遇到了这个错误。

标签: c# winforms datagridview dbnull


【解决方案1】:

在不同的系统中尝试。这对我来说很完美。

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

IDE: Visual Studio 2013

.Net:4.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多