2012-01-09 10 views
2

ちょっと私は過去30日間のストアドプロシージャで特定のデータを表示したいと思います。ここで私は(ファイルaspx.cs)やっていることです:GridTimeのSqlDataSourceパラメータとしてDateTimeを設定する

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

よくデータがありますか? – V4Vendetta

答えて

2

EDIT:この回答の以前のバージョンは受け入れられましたが、私が使用したパラメータの種類を誤解していたようです。 web controls ParameterCollectionはややひどいです。

私は、SQL形式に日付の値を変換することをお勧めし(それは私の痛み限り、率直に - 文字列変換は可能な限り避けるべきです)。 (日付のみのタイプについてyyyy-MM-ddに変更):たとえば

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

私はSqlDataSource自分自身を使用していないが、あなたは二度パラメータを導入しているように、それはまたに見える - 一度にマークアップ、そしてコード内で一度。あなたがマークアップ(バインディングを含む)の値を持っていないことを考えれば、そこからそれらを削除したいかもしれませんが、私は間違っている可能性があります。

クエリが期待どおりに実行されていない場合は、実際のクエリが実行中であることを確認するために、データベースログ(または適切なツール)を確認する必要があります。

+1

私はエラー\t「『System.Web.UI.WebControls.ParameterCollection.Add(文字列、System.Data.DbType、文字列)』の最良のオーバーロードされたメソッドの試合は、いくつかの無効な引数を持っている」 – user1051364

+1

を以下の取得)(私はのtoStringを削除した場合また、aspxファイルからパラメータを削除すると問題を解決するように見えました...少なくとも、私は今、画面上にいくつかのデータを取得します。私はtoString()変換を使用しなければならなかった... – user1051364

+0

私はまったく同じ問題があります。 .Addメソッドは文字列のみを許可し、私の場合はSQLにエラーが発生します。どのように進めるかわからない。 – carny666

関連する問題