如果数据库值为空,则隐藏GridView图像列

时间:2016-07-19 08:48:32

标签: c# .net gridview datagridview

我有一个Gridview,右侧有一个图像列。当用户选中一个复选框时,只显示那些带有非空图像的项目。

我已经看到Gridview使用默认的Image,如果该行对应的数据库图像是空的。我是否需要为此编写一个新的存储过程,或者有更好的方法。

我目前已经实现了这个

try
{
    if (checkBox1.Checked == true)
    {
        dgvGetData.Columns["image"].Visible = true;
        foreach (DataGridViewRow row in dgvGetData.Rows)
        {
            Console.WriteLine("LOOP");
            if (row.Cells[16].Value == null)
            {
                Console.WriteLine("######################################> NULL");
                row.Visible = false;
            }
            else
            {
                Console.WriteLine("######################################> NOT NULL");
            }
        }
    }
    else
    {
        dgvGetData.Columns["image"].Visible = false;
    }
}
catch (Exception error)
{
    MessageBox.Show(error.Message);
}

1 个答案:

答案 0 :(得分:0)

我建议您使用CellFormatting事件处理程序。您可以编写几行代码来确定您是否在正确的列上,然后让它显示您想要的任何内容。

以下是一个部分示例:

    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.Value == null && dataGridView1.Columns[e.ColumnIndex].Name == "Image")
        {
            dataGridView1.Rows[e.RowIndex].Visible = false;
        }
    }

https://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcellformattingeventhandler(v=vs.110).aspx