将DateTime设置为Gridview的SqlDataSource参数

嘿我想在过去的30天里用我的存储过程显示某些数据。 这是我所做的(aspx.cs文件):

protected void Page_Load(object sender, EventArgs e) { DateTime toDate, fromDate; toDate = DateTime.Now; fromDate = toDate.Subtract(new TimeSpan(31, 0, 0, 0)); SqlDataSource1.SelectParameters.Add("fromDate", DbType.DateTime, fromDate.ToString()); SqlDataSource1.SelectParameters.Add("toDate", DbType.DateTime, toDate.ToString()); } 

这是我的aspx文件

  

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="" SelectCommand="procCustomer_SelectbyCreationDate" SelectCommandType="StoredProcedure">

当我测试这个时,我的屏幕显示为空白(除了母版页元素)并且没有错误。 有任何想法吗?

编辑:即使这个答案的早期版本被接受,看起来我误解了所使用的参数类型。 Web控件ParameterCollection看起来有点糟糕。

我建议将日期值转换为SQL格式(就像我痛苦的那样,坦率地说 – 应该尽可能避免字符串转换)。 例如:

 SqlDataSource1.SelectParameters.Add("fromDate", DbType.DateTime, fromDate.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture)); SqlDataSource1.SelectParameters.Add("toDate", DbType.DateTime, toDate.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture)); 

(更改为yyyy-MM-dd仅适用于日期类型。)

我自己没有使用过SqlDataSource ,但看起来你也引入了两次参数 – 一次是在标记中,一次是在代码中。 鉴于您没有标记中的值(包括绑定),您可能希望从那里删除它们 – 但我可能在这方面错了。

如果您的查询未按预期执行,则应检查数据库日志(或任何适当的工具)以检查正在执行的实际查询。