Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 当用户未填写datetime时,传递值null_Asp.net_C# 4.0 - Fatal编程技术网

Asp.net 当用户未填写datetime时,传递值null

Asp.net 当用户未填写datetime时,传递值null,asp.net,c#-4.0,Asp.net,C# 4.0,我创建了一个函数。其中日期可由用户选择。当用户没有选择我要传递的日期时,为空 public DataSet GetInvoicebyPaging(int pageIndex, int pageSize, Int32 clientId, DateTime startDate, DateTime endDate, string invoiceNumber, ref int totalInvoice) { // doing something here } 这是我调用函数的代码部分 _o

我创建了一个函数。其中日期可由用户选择。当用户没有选择我要传递的日期时,为空

 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(),因此如何解决此问题,因为当用户未填写日期时,它会给我异常。那么我该如何处理这个问题呢。

您可以创建一个可为空的日期时间变量,如下所示

DateTime? value = null;
并将其作为参数传递

在您的函数中,您可以使用诸如
DateTime?值
作为参数

因此,您必须执行以下步骤

 DateTime? startDate=txtFirstDate.Text.Trim()==""?null:Convert.ToDateTime(txtFirstDate.Text.Trim());

更改函数参数,使其可以像上面那样接受空值。

您需要将方法更改为:

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;
}
var dateString = txtFirstDate.Text ?? "";

对于您希望能够接受为空的任何日期,如
DateTime startDate
,您需要将其设置为空,如
DateTime?起始日期

然后在调用
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
后,您可以执行以下操作:

DateTime? start = null;
DateTime possibleStartValue;
if(!string.IsNullOrEmpty(txtTextBox.Text) && DateTime.TryParse(txtTextBox.Text, out possibleStartValue))
{
    start = possibleStartValue;
}
var dateString = txtFirstDate.Text ?? "";

并将
dateString.Trim()
传递到
DateTime.TryParse

使DateTime为空。。还要检查value是否为null如果value为null,那么我如何将获取的值发送到那里。因为当用户未在文本框中填充任何内容时,这将如何转换.TodateTime()将值发送到DAC函数GetInvoicebyPaging(),其中两个值是DateTime startDate、DateTime endDate、@zaki或我需要使用DateTime.Tryparse(),如果这样,我如何在函数中使用DateTime.Tryparse()