我有2个文本框,我必须添加Joining Date
和Leaving Date
。
现在,当我添加加入日期并将Leaving date
留空并提交表单时,我收到错误
字符串未被识别为有效日期时间
这是我的
代码cmd1.Parameters.Add("@leaving_date", SqlDbType.DateTime).Value = Convert.ToDateTime(txtdol.Text);
我不知道为什么会出错。请帮忙
更新:
文本框代码: -
<asp:TextBox ID="txtdol" CssClass="form-control" runat="server" ValidationGroup="AddNew" Enabled="true"></asp:TextBox>
答案 0 :(得分:0)
确保在文本框中以有效格式输入日期。最好的选择是为文本框使用日期验证器,如果输入的日期格式是错误的,则可以显示验证错误而不是RTE。
这是验证的问题:
这是MSDN的可用日期格式:
https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx
答案 1 :(得分:0)
当然你会得到错误。
中发生的错误Convert.ToDateTime(txtdol.Text);
你正在尝试转换null的东西,就像你说编译器编译它一样:
Convert.ToDateTime("");
它的emptry字符串,无法转换。
以下是您可以考虑的一些选项:
使用此代码代替该行末尾的代码
String.IsNullOrEmpty(txtdol.Text)? DateTime.Now:Convert.ToDateTime(txtdol.Text)
如果txtdol为null或为空,则返回当前日期时间,否则将txtdol转换为datetime并返回。
答案 2 :(得分:0)
用户输入日期到文本框的好方法是使用: 1- MaskedTextBox 要么 2- DateTimePicker。 要么 如果你想使用文本框,你也可以使用这个代码来检查空值。
DateTime? nullDateTime = null;
cmd1.Parameters.Add("@leaving_date", SqlDbType.DateTime).Value = string.IsNullOrEmpty(txtdol.Text.Trim()) ? nullDateTime : Convert.ToDateTime(txtdol.Text.Trim())
并且对于验证文本框,请检查此功能:
private bool validateDate(TextBox arg1)
{
DateTime dt;
bool valid1 = DateTime.TryParseExact(arg1.Text.Trim(), "dd/MM/yyyy", null, System.Globalization.DateTimeStyles.None, out dt);
if (!string.IsNullOrEmpty(arg1.Text.Trim()) )
{
MessageBox.Show("Format Date is wrong! Currect format is(dd/MM/yyyy)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
arg1.Focus();
return false;
}
return true;
}
答案 3 :(得分:0)
由于在文本框中输入了无效的日期格式(空格式或格式错误)而发生此错误修复问题修改代码如下所示,使用DateTime.ParsExact
cmd1.Parameters.Add("@leaving_date", SqlDbType.DateTime).Value = DateTime.ParsExact(txtdol.Text,"dd/MM/yyyy",System.Globalization.DateTimeStyles.AllowInnerWhite);
第二个参数也可以改为格式数组。
根据需要更改代码
答案 4 :(得分:0)
在收到这么多错误之后,就像这样
if (txtdol.Text == null || txtdol.Text == string.Empty)
{
cmd.Parameters.Add("@leaving_date", SqlDbType.DateTime).Value = DBNull.Value;
}
else
{
cmd.Parameters.Add("@leaving_date", SqlDbType.DateTime).Value = Convert.ToDateTime(txtdol.Text);
}
它有效.. !!