我创建了一个函数。用户可以选择日期。并且当用户没有选择我要传递null的日期时。
public DataSet GetInvoicebyPaging(int pageIndex, int pageSize, Int32 clientId, DateTime startDate, DateTime endDate, string invoiceNumber, ref int totalInvoice)
{
// doing something here
}
这是我调用函数的代码部分
_orderDAC.GetInvoicebyPaging(pageIndex, grdInvoice.PageSize, clientid, Convert.ToDateTime(txtFirstDate.Text.Trim()), Convert.ToDateTime(txtLastDate.Text.Trim()), txtInvoiceNumber.Text.Trim(), ref invoicecount);
有时候用户无法填充txtFirstDate.Text
,但我正在转换Convert.TodateTime(),所以如何解决这个问题,因为当用户没有填写日期时间时,它会给我异常。那我该怎么办呢。
答案 0 :(得分:1)
您需要将方法更改为:
public DataSet GetInvoicebyPaging(int pageIndex, int pageSize, Int32 clientId, DateTime? startDate, DateTime endDate, string invoiceNumber, ref int totalInvoice)
{
// doing something here
}
当你解析用户数据时,你可以这样做:
DateTime? start = null;
DateTime possibleStartValue;
if(!string.IsNullOrEmpty(txtTextBox.Text) && DateTime.TryParse(txtTextBox.Text, out possibleStartValue))
{
start = possibleStartValue;
}
答案 1 :(得分:0)
您可以按如下方式创建可以为空的日期时间变量
DateTime? value = null;
并作为参数传递
在您的功能中,您可以使用DateTime? value
作为参数
所以你必须做以下步骤
DateTime? startDate=txtFirstDate.Text.Trim()==""?null:Convert.ToDateTime(txtFirstDate.Text.Trim());
更改你的函数参数,以便它可以采用如上所述的空值。
答案 2 :(得分:0)
对于您希望能够接受为null的任何日期,例如DateTime startDate
,您需要使其像DateTime? startDate
然后在致电GetInvoicebyPaging
之前尝试整理日期时间。
DateTime startDate;
var correctStart = DateTime.TryParse(txtFirstDate.Text.Trim(), out startDate);
然后传递参数
_orderDAC.GetInvoicebyPaging(pageIndex, grdInvoice.PageSize,
clientid, (correctStart ? startDate : null), etc
您可能必须检查txtFirstDate.Text
是否也为空。
在声明startDate
之后,您可以执行以下操作:
var dateString = txtFirstDate.Text ?? "";
将dateString.Trim()
传递到DateTime.TryParse