1

日付が 12 を過ぎた後の日付の取得に問題があります。たとえば、カレンダー エクステンダーからクリックすると、2013 年 2 月 7 日から 2013 年 7 月 19 日まで、次のエラーが表示されます。DateTimeで表される文字列は、カレンダー System.Globalization.GregorianCalendar ではサポートされていません。

これは私のコードです。

    var format = "MM/dd/yyyy";
    DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
    DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);



    if (two >= one)
    {
        SqlConnection conn = new SqlConnection("Data Source=""catalog="";Integrated Security=True");
        conn.Open();
        SqlCommand cmd = new SqlCommand("SELECT Name,CLass, NRIC, StallNo, AmountSpent ,TimeDate=convert(nvarchar,timedate,103)  FROM StudentTransactions WHERE TimeDate BETWEEN '" + one + "' AND '" + two + "'", conn);
        SqlDataReader reader = cmd.ExecuteReader();
        GridView1.DataSource = reader;
        GridView1.DataSourceID = null;
        GridView1.Visible = true;
        GridView1.DataBind(); 
        conn.Close();
   }
4

3 に答える 3

1

GridViewCodeBehind からa の列の形式を変更する場合はRowDataBound、グリッド ビューに a を追加します。

次に、GridView_RowDataBound(object sender, GridViewRowEventArgs e)メソッドで e にアクセスできるようになります。これにより、フォーマットを指定できるその行の個々のセルにアクセスできます。

参照

参照2

于 2013-07-10T01:59:33.710 に答える
0

最初に、列の日付部分がTimeDate目的の形式、つまり「dd/mm/yyyy」であることを確認してください。

var format = "dd/mm/yyyy";
DateTime one = DateTime.ParseExact(startdate, format, CultureInfo.InvariantCulture);
DateTime two = DateTime.ParseExact(enddate, format, CultureInfo.InvariantCulture);

EDIT:出力をフォーマットするには、ffを実行できます:GridView1のTimeDateにBoundfieldがあると仮定します:

<asp:BoundField DataField="TimeDate" HeaderText="TimeDate" DataFormatString="{0:dd/MM/yyyy}" />

DataFormatString="{0:d}"を使用して、現在のカルチャの短い日付形式で日付を出力することもできます。

于 2013-07-10T02:03:27.117 に答える