<asp:Repeater ID="Repeater1" DataSourceID="SqlDataSource1" runat="server">
            <HeaderTemplate>
                <table border="1">
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td><asp:HyperLink ID="HyperlinkA" runat="server" NavigateUrl="~/default.aspx" Text='<%# Eval("A") %>' /></td>
                    <td><asp:HyperLink ID="HyperLinkB" runat="server" NavigateUrl="~/default.aspx" Text='<%# Eval("B") %>' /></td>
                    <td><asp:HyperLink ID="HyperLinkRQ"  runat="server" NavigateUrl="~/default.aspx" Text='<%# Eval("RQ", "{0:m}") %>' /></td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            OnSelecting="SqlDataSource1_Selecting" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>"
            SelectCommand="select A, B from TABLE where RQ>=@RQ order by CLRQ desc" DataSourceMode="DataReader">
            <SelectParameters>
                <asp:Parameter Name="RQ" />
            </SelectParameters>
</asp:SqlDataSource>protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{        
    SqlDataSource1.SelectParameters["RQ"].DefaultValue = DateTime.Now.AddDays(-3).ToShortDateString();
}时,Repeater里什么都不显示。
而把SqlDataSource绑定到GridView时就能正确显示数据。
如:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" DataSourceID="SqlDataSource1">
</asp:GridView>搞不清为什么。<SelectParameters>
                <asp:Parameter Name="CLRQ" DefaultValue="2008-5-19" />
</SelectParameters>
时,Repeater只显示5-19日的数据,而GridView显示3天前到当天的数据(即RQ>=DateTime.Now.AddDays(-3))。

解决方案 »

  1.   

    应该是
    <SelectParameters> 
                     <asp:Parameter Name="RQ" DefaultValue="2008-5-19" /> 
    </SelectParameters> 
    不是CLRQ. 参数没问题。
      

  2.   

    不用 Selecting事件,这样就行<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=" <%$ ConnectionStrings:ConnectionString %>"  ProviderName=" <%$ ConnectionStrings:ConnectionString.ProviderName %>" 
                SelectCommand="select A, B from TABLE where RQ>=@RQ order by CLRQ desc" DataSourceMode="DataReader"> 
                 <SelectParameters> 
                     <asp:Parameter Name="RQ" DefaultValue="2008-5-19" /> 
                 </SelectParameters> 
    </asp:SqlDataSource> 
      

  3.   

    不过既然是固定值,干嘛用参数?<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=" <%$ ConnectionStrings:ConnectionString %>"  ProviderName=" <%$ ConnectionStrings:ConnectionString.ProviderName %>" 
                SelectCommand="select A, B from TABLE where RQ>="2008-5-19" order by CLRQ desc" DataSourceMode="DataReader"> 
    </asp:SqlDataSource> 
      

  4.   

    同意LS,这里可以不用参数
    SelectCommand="select A, B from TABLE where RQ>="2008-5-19" 
      

  5.   

    老大们,求你们啦。我不会弱智到不明白直接RQ>="2008-5-19吧?
      

  6.   

    sqlDataSource不熟 看看学习学习
      

  7.   

    to:amandag 
    不是固定值问题。
    <SelectParameters>  
       <asp:Parameter Name="RQ" DefaultValue="2008-5-19" />  
    </SelectParameters>  
    时DetailsView才显示数据.
    ========================================

    <SelectParameters>  
       <asp:Parameter Name="RQ" />  
    </SelectParameters> 
    加上
    protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {        
        SqlDataSource1.SelectParameters["RQ"].DefaultValue = DateTime.Now.AddDays(-3).ToShortDateString();
    }时Repeater不显示数据的问题,这种情况下GridView显示数据,而Repeater为什么不能显示,这个问题。
      

  8.   

    GridView,DetailsView,FormView是ASP.NET 2.0新增的数据绑定控件,只要设置了数据源控件,就可以进行增删改查而Repeater和DataList则必须手动设置
      

  9.   

    在Page_Load里Repeater.DataBind()后可以显示数据了。不过,还是有点模模糊糊,等搞清了再结贴。
      

  10.   

    楼下几个回答的人显然不明白楼主的用意,虽然我也不知道怎么解决。但是可以提高另一条路的建议:
    楼主用存储过程吧,SQL里面自带函数