2013-02-21 85 views
0

在哪里可以在asp.net生命周期方法中创建此对象,而不会收到超出范围的异常。现在,我实际上可以获取包含值的资源集合的唯一地方是在webschedule info的onreasourcefetched方法中。但是我需要在webscheduleinfo创建之前这样做,并且它的视图由用户填充。ArgumentOutOfRangeException当访问资源收集项目

protected void Page_Init(object sender, EventArgs e) 
     { 
      ResourcesCollection resources = WebScheduleInfo1.VisibleResources; 

      int count = resources.Count; 
      Resource obje = (Resource)resources.GetItem(1); 
      string name = obje.Name; 
      resources.Clear(); 
      resources.Add(obje); 
      this.WebScheduleInfo1.ActiveResourceName = name; 
     } 
+0

是否有在Page_Load集合中的项目?如果没有,请提供相关的代码,了解如何绑定WebSchedule。 – alhalama 2013-02-21 19:37:22

+0

这段代码在页面加载时也不起作用(我目前没有任何内容)。现在我正在使用设计视图中的控件绑定webschedule。您需要创建至少一个webscheduleinfo控件,以便您可以访问资源集合。从那里我想找出我有多少资源,以便我可以动态地为每个资源创建webdayview控件。 WebscheduleInfo在page_load事件之后获取资源,因此您在此之前无法访问集合。我无法动态地创建我的控件,而无需知道需要创建多少 – zms6445 2013-02-21 21:45:13

+0

您目前在设计视图中绑定了什么来获取此信息?它是使用SqlDataProvider的SqlDataSource吗?您是否可以直接从数据库中获取资源数量或更改获取数据的方式,以便可以使用GenericDataProvider访问它? – alhalama 2013-02-22 15:56:43

回答

2

你得到资源的计数,但你不检查,以确保计数大于0

(Resource)resources.GetItem(1),除非资源集合中有至少2项将失败。

的集合0基础的,所以如果你想第一个项目做这样的事情:

protected void Page_Init(object sender, EventArgs e) 
{ 
    ResourcesCollection resources = WebScheduleInfo1.VisibleResources; 

    int count = resources.Count; 

    if(count > 0) 
    { 
     Resource obje = (Resource)resources.GetItem(0); 
     string name = obje.Name; 
     resources.Clear(); 
     resources.Add(obje); 
     this.WebScheduleInfo1.ActiveResourceName = name; 
    } 
}