2013-02-21 105 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; 
    } 
}