C#:如何调整用户在DataGridView中输入的值?
我有一个数据绑定的DataGridView。数据源是一个类型化数据集,其表包含两列C#:如何调整用户在DataGridView中输入的值?,c#,data-binding,datagridview,C#,Data Binding,Datagridview,我有一个数据绑定的DataGridView。数据源是一个类型化数据集,其表包含两列DateTime(BeginTimeStamp和EndTimeStamp)。我使用类型化数据集的Update命令将数据读写到SQLServer2005数据库 用户必须在两列中的每一列中输入一个日期,我使用CellValidating和RowValidating事件强制执行该日期。但是,我还需要确保以下两条规则适用: BeginDate列的时间值必须始终为00:00:00 EndDate列的时间值必须始终为23:59
DateTime
(BeginTimeStamp
和EndTimeStamp
)。我使用类型化数据集的Update
命令将数据读写到SQLServer2005数据库
用户必须在两列中的每一列中输入一个日期,我使用CellValidating
和RowValidating
事件强制执行该日期。但是,我还需要确保以下两条规则适用:
BeginDate
列的时间值必须始终为00:00:00EndDate
列的时间值必须始终为23:59:59(或11:59:59 pm,如果您愿意)BeginTimeStamp
的时间部分固定在午夜,而EndTimeStamp
的时间部分固定在23:59:59
例如:
用户以BeginTimeStamp
的形式输入2009/01/01 01:00:00pm。我的申请应该改为2009/01/01 00:00:00
用户以
EndTimeStamp
的形式输入2009/01/31 01:00:00pm。我的应用程序应将其更改为2009/01/31 23:59:59。我不确定是否遵循,用户必须输入两个日期的值,但它们始终相同?如果我理解正确,为什么不在数据库中设置默认值,那么当您读入数据集时,这些值将已经存在了我不确定是否遵循,用户必须为这两个日期输入一个值,但它们总是相同的?如果我理解正确,为什么不在数据库中设置默认值,那么当您读入数据集时,这些值就已经存在了您可以在其他验证之后,将以下行添加到您的CellValidating
方法中
DateTime newValue = oldValue.Date;
及
在其他验证之后,您可以将以下行添加到
cellvaligning
方法中
DateTime newValue = oldValue.Date;
及
我只是将DateTime显示为日期,并在幕后添加时间 这可能是在用户输入数据时,也可能是在您将数据写入数据库时 如果选择前者,请查看DataGridView.CellEndEdit事件
请参阅Noam的答案,以获得适当设置时间的代码。我只需将DateTime显示为日期,并在幕后添加时间 这可能是在用户输入数据时,也可能是在您将数据写入数据库时 如果选择前者,请查看DataGridView.CellEndEdit事件
请参阅Noam的答案,以获取适当设置时间的代码。您也可以在属性设置器中执行验证:
public DateTime BeginTimeStamp
{
get { return _dateTime; }
set
{
// force the time to whatever you want
_dateTime = value.Date;
}
}
您还可以在属性设置器内执行验证:
public DateTime BeginTimeStamp
{
get { return _dateTime; }
set
{
// force the time to whatever you want
_dateTime = value.Date;
}
}
我认为OP的意思是DateTime的时间部分必须相同,但日期可以是任何东西。如果我造成任何混乱,对不起-我编辑了我的帖子以使事情更清楚。我认为OP的意思是DateTime的时间部分必须相同,但是日期可以是任何事情。如果我造成了任何混乱,我很抱歉——我已经编辑了我的帖子以使事情更清楚。