试图在日期时间切断时间

时间:2012-04-05 15:15:10

标签: c# asp.net gridview

我遇到一些问题,只能在我的表格中显示日期..

我在上一个问题上得到了一些帮助,但遇到了另一个问题。这些是我们添加的内容:

((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页后面的代码 当我运行它时,我得到:

  

“索引超出范围。必须是非负数且小于集合的大小。

     

参数名称:索引
      描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。
      参数名称:index“及其在此行上”第158行:((BoundField)gvEmployeeReview.Columns [1])。DataFormatString =“{0:d}”; // date雇用专栏“

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

4 个答案:

答案 0 :(得分:3)

如异常所示,您正在访问超出范围的集合的成员。可能gvEmployeeReview.Columns[1]不存在。 gvEmployeeReview.Columns中有多少成员?

答案 1 :(得分:3)

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

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

这会产生实际的列数

gvEmployeeReview.Columns.Count

更新

我不是网络专家;我刚刚用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'"的对话框窗口。 Klick是的。设计器会自动为所选类的每个属性添加列,并显示一些示例数据。

  6. 现在,再次点击[>],然后选择Edit Columns...。选择左下方列表中的日期列。您可以在属性窗口的DataFormatString部分找到Data属性。您可以在此处输入{0:d}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我只是重新编写页面并在gridview中构建表而不是在代码中构建它...最后它变得更容易......改变了一些代码......但事实证明好...感谢所有输入