2013-08-31 67 views
0

我使用ajax日历扩展器和TextChanged事件关注TextBox,我打电话给“txtFromDate_TextChanged”函数。无法将字符串转换为日期时间

ASP代码:

<asp:TextBox ID="txtFromDate" runat="server" AutoPostBack="True" 
          ontextchanged="txtFromDate_TextChanged"></asp:TextBox> 
    asp:CalendarExtender ID="txtFromDate_CalendarExtender" Format="dd/MM/yyyy" runat="server" Enabled="True" 
          TargetControlID="txtFromDate"> 
         </asp:CalendarExtender> 

C#代码:

protected void txtFromDate_TextChanged(object sender, EventArgs e) 
{ 
    if (txtFromDate.Text != "") 
    { 
    DateTime fromdate = Convert.ToDateTime(txtFromDate.Text); 
    Query = Query + "And CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, ord_del_date))) >= '" + fromdate.ToString("yyyy'-'MM'-'dd") + "'"; 

    } 
} 

此代码工作都很好,当我通过Visual Studio调试的时候我连主办的网站上我的本地IIS服务器。 的问题是,当我是主持人对我的在线托管服务器现场,当我拿起从压延机的日期和调用TextChanged事件它提供了以下错误:

错误:

String was not recognized as a valid DateTime. 

我知道它是因为行给错误:

DateTime fromdate = Convert.ToDateTime(txtFromDate.Text); 

但我没有发现此代码中的任何错误。 这段代码从visual studio或托管在IIS上工作得很好,但我完全困惑为什么托管在托管服务器上时它不工作。我完全困惑。请帮助我。

+1

那么什么是'txtFromDate.Text'的价值?为什么动态构建SQL而不是使用参数化SQL?我的猜测是问题在于服务器使用系统本地文化,并且您应该使用指定不变文化的“DateTime.ParseExact”。 –

回答

0
DateTime fromdate = DateTime.ParseExact(txtToDate.Text, "dd/MM/yyyy", null); 

Query = Query + "And CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, ord_del_date))) >= '" + fromdate.ToString("yyyy'-'MM'-'dd") + "'"; 
2

尝试在ASPX改变日期格式

dd-MMM-yyyy (if you want month) 

dd-MM-yyyy (if you want only month) 
1

试试这个:

IFormatProvider provider = new System.Globalization.CultureInfo("gu-IN", true); 
DateTime dtime = DateTime.Parse(txtFromDate.Text, provider, System.Globalization.DateTimeStyles.NoCurrentDateDefault); 
1
fromdate.ToString("yyyy'-'MM'-'dd") 

改变这种格式,它正在

fromdate.ToString("yyyy-MM-dd") 
相关问题