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”及其在这一行的“Line 158: ((BoundField)gvEmployeeReview.Columns[1]).DataFormatString = "{0:d}"; //日期雇用列"

任何试图解决这个问题的帮助都会很棒。我没有运气

4

4 回答 4

3

这与日期格式无关。尝试访问列时可能会发生错误。请注意,列索引从零开始。如果您有N列,则索引范围从0N-1。尝试使用索引[0]and[7]而不是[1]and [8]

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

这会产生实际的列数

gvEmployeeReview.Columns.Count

更新

我不是网络专家;悬停,我刚刚用 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. 将 aGridView放在页面上,然后单击[>]右上方的小图标打开任务窗口GridView

  3. Choose Data Source...选择<New data source...>.

  4. Data Source Configuration Wizard打开的窗口中,选择Object然后单击OK。然后选择Model类作为业务对象并单击Next >。最后GetModelsSELECT选项卡上选择并单击完成。

  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

我只是重做了页面并在gridview中构建了表格,而不是在代码中构建它......最后它更容易......不得不更改一些代码......但结果一切都很好......感谢所有的投入

于 2012-04-12T14:14:37.857 回答
0

查看您的集合数据源,您尝试读取不存在的内容。可以这样想:你有三个桶。现在我问你第四个桶里有什么?这个错误是你告诉我我没有第四桶。

于 2012-04-05T15:23:34.657 回答