【问题标题】:search for null cells in column of mysql database and display on the datagridview在 mysql 数据库的列中搜索空单元格并显示在 datagridview 上
【发布时间】:2017-01-17 14:40:32
【问题描述】:

我的应用程序需要在我们的任务管理软件中搜索未完成的项目。为此,我正在尝试实现一种方法,我可以读取我们的 MySQL 数据库以查找不完整的项目并将它们显示在屏幕上。如果特定单元格是“空值”,则项目将不完整。当单元格显示“已完成”时,项目已完成。我正在尝试连续搜索所有空值,并使用 Visual Basic C# 将它们显示到DataGridView。 我尝试的代码如下,不幸的是它不起作用:

private void button4_Click(object sender, EventArgs e)
{
    DataView DV = new DataView(dt);
    DV.RowFilter = string.Format("BackSheetAssembled LIKE '%{0}%'", DBNull.Value );
    dataGridView1.DataSource = DV;
}

我尝试了相同的方法,将 DBNull.Value 替换为文本框,它可以正常工作并在数据库中搜索这些文本,但它不适用于 Null 值。

【问题讨论】:

    标签: c# mysql datagridview


    【解决方案1】:

    试试这个

    DV.RowFilter = "Isnull(BackSheetAssembled,'') = ''";
    

    【讨论】:

    • 可以去掉string.Format。
    • 就像一个魅力。如果我可以问,该声明中发生了什么?
    • Ammar - 你想要“为空”
    • 通过这种方式,我们使用 ISNULL 函数进行过滤。如果单元格值为 null,则 Isnull 函数返回空字符串,然后与空字符串比较给出结果
    • 我明白了。。谢谢。
    【解决方案2】:

    DV.RowFilter = "BackSheetAssembled 为空";

    例子:

    var table = new DataTable();
    table.Columns.Add(new DataColumn("Id"));
    table.Columns.Add(new DataColumn("Name"));
    table.Rows.Add(new object[] { 123, "Name1" });
    table.Rows.Add(new object[] { 234, "Name2"});
    table.Rows.Add(new object[] { null, "Name3" });
    
    var view = new DataView(table);
    view.RowFilter = "Id is null";
    
    for (int i = 0; i < view.Count; i++)
       Console.WriteLine(view[i][1].ToString());
    
    Console.ReadLine();
    

    输出:名称3

    【讨论】:

    • 请使用edit链接解释这段代码是如何工作的,不要只给出代码,因为解释更有可能帮助未来的读者。另见How to Answersource
    猜你喜欢
    • 2012-03-24
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多