2012-01-25 92 views
0

我使用ASP.NET中的Chart函数生成了一个图表,它从SQL数据库中检索它的数据。目前它检索2008年的所有温度,因为我已经要求SQL数据源查找包含2008的所有日期。我一直在尝试将组合框连接到SQL数据源,所以当我选择一年时,它会寻找具体年份,而不是2008年。下面的代码目前作品,未经组合框和检索所有临时工为2008:从combobox中为数据源选择值到查询数据库

<asp:Chart ID="Chart1" runat="server" DataSourceID="SqlDataSource1" 
     Height="349px" Width="977px"> 
     <Series> 
      <asp:Series Name="Series1" XValueMember="JobDate" YValueMembers="CureTemp"> 
      </asp:Series> 
     </Series> 
     <ChartAreas> 
      <asp:ChartArea Name="ChartArea1"> 
      </asp:ChartArea> 
     </ChartAreas> 
    </asp:Chart> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:T2DataString %>" 
     SelectCommand="SELECT * FROM [T2] WHERE DatePart(yyyy, JobDate) = 2008"> 
    </asp:SqlDataSource> 

我加入了以下组合框,并改变了我的SQL数据源如下:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:T2DataString %>" 
     SelectCommand="SELECT * FROM [T2] WHERE ([JobDate] = @JobDate)"> 
     <SelectParameters> 
      <asp:ControlParameter ControlID="ComboBox" DbType="Date" Name="JobDate" 
       PropertyName="SelectedValue" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

    <asp:DropDownList ID="ComboBox" runat="server"> 
     <asp:ListItem>2011</asp:ListItem> 
     <asp:ListItem>2010</asp:ListItem> 
     <asp:ListItem>2009</asp:ListItem> 
     <asp:ListItem>2008</asp:ListItem> 
    </asp:DropDownList> 

当我尝试运行该应用程序时,它说:'字符串未被识别为有效的DateTime'。如何将组合框中的值转换为整数,以便可以在数据源中使用它?我不是想用数据源中的数据填充下拉菜单,我试图使用下拉菜单在数据源中输入值。

谢谢。

回答

0

改变你的下拉listItems中<asp:ListItem Value="2011">2011</asp:ListItem>,也是你的SQL查询应该是类似于从第一代码片断DatePart(yyyy, JobDate)

+0

您好您的查询。我尝试了你的建议,当我尝试运行该页面时出现错误:“字符串未被识别为有效的DateTime。”谢谢 – Blob

+1

在sqldatasource中将DbType =“Date”'更改为'DbType =“String”' –