嘿我想在过去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文件
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" Width="232px" DataKeyNames="CustomerId" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="CreationDate" HeaderText="CreationDate" SortExpression="CreationDate" />
</Columns>
</asp:GridView>
<br />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SSEnewConnectionString %>"
SelectCommand="procCustomer_SelectbyCreationDate" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter DbType="DateTime" Name="fromDate" />
<asp:Parameter DbType="DateTime" Name="toDate" />
</SelectParameters>
</asp:SqlDataSource>
</form>
当我测试这个时,我的屏幕显示为空白(除了母版页元素)并且没有错误。任何想法?
答案 0 :(得分:3)
编辑:尽管这个答案的早期版本被接受,但看起来我误解了所使用的参数类型。 web controls 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
,但它也看起来就像你引入了两次参数 - 一次是在标记中,一次是在代码中。鉴于您没有标记中的值(包括绑定),您可能希望从那里删除它们 - 但我可能在这方面错了。
如果您的查询未按预期执行,则应检查数据库日志(或任何适当的工具)以检查正在执行的实际查询。