如何在c#中为datagridview列单元格设置默认值

Posted

技术标签:

【中文标题】如何在c#中为datagridview列单元格设置默认值【英文标题】:How to set default value to datagridview column cells in c# 【发布时间】:2014-12-01 20:08:04 【问题描述】:

,而一些列用数据库值填充,一些列用默认值填充像这样.. 例如,第 1 列、第 2 列、第 3 列从数据库值填充,其余列第 4 列单元格用上午 9 点填充,第 5 列用下午 6 点填充

private void dataGridView1_DefaultValuesNeeded(object sender, 
                                               DataGridViewRowEventArgs e)

    // This is not working as I explain below
    e.Row.Cells["in_time"].Value = "9 AM";
    e.Row.Cells["Out_time"].Value = "6 PM";
 

我使用此代码,但值位于行的末尾,列是 datagridview 的“In_Tim”列,并且在单击特定单元格之前,这些值是不可见的.. 如何在所有列单元格中填充默认值?

【问题讨论】:

DefaultValuesNeeded 仅在单击新行时使用 - “在用户输入新记录的行时发生,以便可以填充默认值。” - 所以它不会应用于列中的所有单元格。 好的,但是我应该用什么来代替'DefaultValuesNeeded'来解决我的问题@stuartd 您需要显示您从数据库中填充值的代码。 【参考方案1】:

DataGridView 控件有一个名为 DefaultValuesNeeded 的事件,它处理新添加行的默认值填充。

MSDN article regarding this event

文章中概述的 DefaultValuesNeeded 事件的基本语法如下:

private void dataGridView1_DefaultValuesNeeded(object sender, System.Windows.Forms.DataGridViewRowEventArgs e)

    e.Row.Cells["Region"].Value = "WA";
    e.Row.Cells["City"].Value = "Redmond";
    e.Row.Cells["PostalCode"].Value = "98052-6399";
    e.Row.Cells["Country"].Value = "USA";
    e.Row.Cells["CustomerID"].Value = NewCustomerId();

【讨论】:

【参考方案2】:
dataGridView1.Columns["in_time"].DefaultCellStyle.NullValue = "9 AM";
dataGridView1.Columns["Out_time"].DefaultCellStyle.NullValue = "6 PM";  

经过一些建议 这就是我想在 datagridview 列中显示的方式

【讨论】:

This is Null Value, 表示它只是在单元格值为 null 时显示,并不是真正的默认值。 请不要这样做。未来的程序员在查看您的代码时试图弄清楚为什么 SQL 语句等由于显示为非空的空值而无法工作,这让他们感到非常困惑。

以上是关于如何在c#中为datagridview列单元格设置默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 c# winforms 中的列日期和名称将 sql 中的数据输入到特定的 datagridview 单元格中

如何在 datagridview 中为单元格创建页脚

C# .NET中DataGridView 的所有属性?

如何让datagridview单元格只能输入数字 C#

datagridview 将单元​​格样式应用于单元格

Datagridview:如何在编辑模式下设置单元格?