0

テーブルに表示する日付だけを取得するのに問題があります。

前の質問で助けを得ましたが、別の問題が発生しました。これらは私たちが追加したものです:

((BoundField)gvEmployeeReview.Columns[1]).DataFormatString = "{0:d}"; //date hired column
((BoundField)gvEmployeeReview.Columns[8]).DataFormatString = "{0:d}"; //next review column

これがaspxページhttp://pastebin.com/DnH3wcAG
で、これがページの背後にあるコードですhttp://pastebin.com/yY2nbbEG
実行すると、次のようになります。

「インデックスが範囲外でした。負ではなく、コレクションのサイズ未満である必要があります。

パラメータ名:index
説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.ArgumentOutOfRangeException:インデックスが範囲外でした。負ではなく、コレクションのサイズよりも小さい必要があります。
パラメータ名:index"とその行"行158:((BoundField)gvEmployeeReview.Columns [1])。DataFormatString = "{0:d}"; //採用日列"

この問題を解決しようとする助けは素晴らしいでしょう。運がなかった

4

4 に答える 4

3

これは日付の書式設定とは何の関係もありません。おそらく、列にアクセスしようとしたときにエラーが発生します。列のインデックスはゼロベースであることに注意してください。列がある場合N、インデックスの範囲は0からN-1です。[0]and[7]の代わりに[1]インデックスを使用してみてください[8]

((BoundField)gvEmployeeReview.Columns[0]).DataFormatString = "{0:d}";
((BoundField)gvEmployeeReview.Columns[7]).DataFormatString = "{0:d}";

これにより、実際の列数が得られます

gvEmployeeReview.Columns.Count

アップデート

私はWebスペシャリストではありません。ただし、aを使用してテストを行ったGridViewところ、すぐに日付の書式が設定されました。私は次のようなオブジェクトデータソースを使用しました。

  1. 必要なプロパティを持つクラスを作成します。List<T>いくつかの実際のデータまたはサンプルデータを含む静的メソッドを追加します

    public class Model
    {
        public int ID { get; set; }
        public DateTime BeginDate { get; set; }
        public DateTime EndDate { get; set; }
        public string Name { get; set; }
    
        public static List<Model> GetModels()
        {
            return new List<Model> {
                new Model{ BeginDate=DateTime.Now,
                           EndDate=DateTime.Now.AddDays(1), ID=1, Name="test"},
                new Model{ BeginDate=DateTime.Now.AddDays(10),
                           EndDate=DateTime.Now.AddDays(12), ID=1, Name="test 2"}
            };
        }
    }
    
  2. ページにを配置し、の右上にGridViewある小さなものをクリックしてタスクウィンドウを開きます。[>]GridView

  3. Choose Data Source...を選択し<New data source...>ます。

  4. 開いたData Source Configuration Wizardウィンドウで、を選択ObjectしてクリックしますOK。次に、Modelクラスをビジネス・オブジェクトとして選択し、をクリックしますNext >。最後にタブを選択GetModelsし、 [完了]をクリックします。SELECT

  5. ポイント4の最後のステップの後、ダイアログウィンドウが開き、質問が表示されます"Refresh Fields and Keys for 'GridView1'"。クリックはい。デザイナは、選択したクラスのすべてのプロパティに列を自動的に追加し、いくつかのサンプルデータを表示します。

  6. 次に、もう一度クリックして[>]、を選択しますEdit Columns...。左下のリストで日付列を選択します。DataFormatStringプロパティは、セクションの下のプロパティウィンドウにありますData。ここに入力できます{0:d}

于 2012-04-05T15:23:25.910 に答える
3

例外として、範囲外のコレクションのメンバーにアクセスしています。おそらくgvEmployeeReview.Columns[1]存在しません。メンバーは何人いgvEmployeeReview.Columnsますか?

于 2012-04-05T15:17:43.913 に答える
0

コレクションのデータソースを見てください。存在しないものを読み込もうとしています。次のように考えてください。3つのバケットがあります。今、私はあなたに4番目のバケツに何が入っているのか尋ねますか?このエラーは、4番目のバケットがないことを示しています。

于 2012-04-05T15:23:34.657 に答える
0

コードで作成するのではなく、ページを再作成してグリッドビューでテーブルを作成しました...最終的にははるかに簡単でした..コードを少し変更する必要がありました...しかし、すべてがうまくいきました。すべての入力に感謝します

于 2012-04-12T14:14:37.857 に答える