zoukankan
html css js c++ java
自己写的一个用于解决DateTimePicker的值无法为Null的控件.不过有问题.需要请各位帮忙看一下问题出在哪.
我的代码如下
/**/
///
<summary>
///
用于处理DBNull问题的DateTimePicker
///
</summary>
public
class
MDateTimePicker : System.Windows.Forms.DateTimePicker
{
/**/
///
<summary>
///
用于保存本身的值.可以为Null
///
</summary>
private
object
dateValue;
/**/
///
<summary>
///
此控件使用DateTimePicker 本身的CheckBox来控制是否为DBNull,如果Checked==false;则为DBNull
///
所以要让此控件显示CheckBox;
///
</summary>
public
MDateTimePicker()
{
this
.ShowCheckBox
=
true
;
}
/**/
///
<summary>
///
隐藏基类的Value
///
</summary>
public
new
object
Value
{
get
{
return
this
.dateValue;
}
set
{
if
(value
!=
DBNull.Value)
{
base
.Value
=
Convert.ToDateTime(value);
this
.dateValue
=
value;
}
else
{
this
.dateValue
=
null
;
}
valueChanged();
}
}
protected
override
void
OnBindingContextChanged(EventArgs e)
{
//
base.OnBindingContextChanged(e);
//
valueChanged();
}
/**/
///
<summary>
///
当值改变时,修改日期的显示格式
///
</summary>
///
<param name="eventargs"></param>
protected
override
void
OnValueChanged(EventArgs eventargs)
{
if
(
this
.Checked)
{
this
.Format
=
DateTimePickerFormat.Long;
}
}
protected
override
void
OnTextChanged(EventArgs e)
{
base
.OnTextChanged(e);
valueChanged();
}
/**/
///
<summary>
///
当值改变时,修改Checked属性,并修改Format为" ",这样控件就不会显示日期了.看起来像Null
///
</summary>
private
void
valueChanged()
{
if
(
this
.Value
==
DBNull.Value
||
this
.Value
==
null
)
{
this
.Checked
=
false
;
this
.Format
=
DateTimePickerFormat.Custom;
this
.CustomFormat
=
"
"
;
}
else
{
this
.Checked
=
true
;
this
.Format
=
DateTimePickerFormat.Long;
this
.dateValue
=
base
.Value;
}
}
/**/
///
<summary>
///
当按下Delete时,将值修改为Null
///
</summary>
///
<param name="e"></param>
protected
override
void
OnKeyDown(KeyEventArgs e)
{
if
(e.KeyCode
==
Keys.Delete)
{
this
.Value
=
DBNull.Value;
}
}
}
我的问题是:
我在表单中.是这样写的
private
MDateTimePicker dtpPurchaseDate;
this
.dtpPurchaseDate
=
new
WinUI.MDateTimePicker();
DataSet ds
=
new
PurchaseMainBLL().GetAllList();
this
.bindingSource1.DataSource
=
ds;
this
.bindingSource1.DataMember
=
ds.Tables[
0
].TableName;
this
.dtpPurchaseDate.DataBindings.Add(
"
Value
"
,
this
.bindingSource1,
"
PurchaseDate
"
);
当数据库中PurchaseDate字段的值为Null时.此控件可以显示为空.值为日期时.此控件也可以正确显示.
只是当我按DELETE时,控件显示的日期被删除.Value也变成了null.但与它绑定的PurchaseDate的值不会改变.
请各位牛人.帮忙看一下.谢谢!
---------------------------------------------------------------------
每个人都是一座山.世上最难攀越的山,其实是自己.往上走,即便一小步,也有新高度
.
--做最好的自己,我能!!!
查看全文
相关阅读:
做报表,写Sql语句的一点收获
ORACLE PL/SQ入门
用Visual C#实现P2P应用程序
css资源网站收集推荐
Ubuntu 蓝牙全攻略
Asp.Net细节性问题技巧精萃
Asp.net Request获取服务器变量的方法
如何将flash插入到Excel文件中
XP远程桌面连接强制登录
flash研究(三)——Falsh与JavaScript交互
原文地址:https://www.cnblogs.com/tonyepaper/p/1176392.html
最新文章
在 Windows 窗体 DataGridView 单元格中承载控件
多线程、定时、异步一些应用
FFmpegPHP 1.2 发布
svshost进程介绍
Windows下DOS命令大全(经典收藏)
C#利用DataGridView实现数据的快速输入
Ubuntu 10.10将采用十进制表示文件大小
ASP.NET小技巧——回传后保持页面的滚动位置
Linux下留本地后门的两个方法
MultiCD: 构建多重引导 CD 映像
热门文章
TCP c/s模式实现点对点,一对多聊天 识别不同的TCP通道.给相应的TCP客户发送信息
编写模块遍历系统中的进程
.net C# Treeview的Node拖动,Node节点上下移动
北京思源培训中心C#下用P2P技术实现点对点聊天(2)
VS2005下ComboBoxTreeView(下拉列表框弹出树) 与ToolStripComboBoxTreeView(下拉列表框工具条弹出树)的实现
UDP协议下内网与公网IP进行发送消息,一对多.且选择不同的客户端发送消息
Windows Forms DataGridView 中合并单元格
利用P2P技术实现点对点聊天
Asp.net Request方法获取客户端的信息
UDP实现内网到网的点对点发送消息与转发消息
Copyright © 2011-2022 走看看