将DateTime设置为Gridview的SqlDataSource参数

时间:2012-01-09 10:55:06

标签: c# asp.net 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文件

 <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>

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

1 个答案:

答案 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,但它也看起来就像你引入了两次参数 - 一次是在标记中,一次是在代码中。鉴于您没有标记中的值(包括绑定),您可能希望从那里删除它们 - 但我可能在这方面错了。

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