2013-02-21 10 views
0

Где я могу создать этот объект в методах жизненного цикла asp.net без получения исключения за пределами диапазона. Сейчас единственное место, где я могу получить набор ресурсов, содержащий значения, - это метод onreasourcefetched для информации webschedule. Но мне нужно сделать это до создания 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

+0

Этот код не будет работать на странице загрузки (у меня там ничего нет на данный момент). Прямо сейчас я использую привязку webschedule с помощью элементов управления в представлении дизайна. Вы должны иметь по крайней мере один элемент управления webscheduleinfo, созданный для доступа к коллекции ресурсов. Оттуда я хотел узнать, сколько ресурсов у меня есть, чтобы я мог динамически создавать элементы управления webdayview для каждого ресурса. WebscheduleInfo извлекает ресурсы после события page_load, поэтому до этого вы не можете получить доступ к коллекции. Я не могу динамически создавать свои элементы управления, не зная, сколько мне нужно создать – zms6445

+0

. К чему вы сейчас привязываетесь в проектном представлении, чтобы получить эту информацию? Это SqlDataSource, используя SqlDataProvider? Возможно ли вам получить счет ресурсов из базы данных напрямую или изменить способ получения данных, чтобы у вас был доступ к нему, возможно, с помощью GenericDataProvider? – alhalama

ответ

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; 
    } 
} 
Смежные вопросы