2014-02-13 3 views
0

Это то, что я делаю все время ... Я уверен, что это только ранний утренний синдром, но я не вижу, что здесь не так.Объект не найден второй раз

Тот же объект устанавливается разными способами, но во второй раз я не вижу ссылки на него.

Markup:

<asp:Repeater runat="server" id="rptSecondTab" OnItemDataBound="rptSecondTab_ItemDataBound"> 
    <ItemTemplate> 
     <div id="divIcon" ClientIDMode="Static" runat="server" class="tab-pane overflow-auto"> 
      <asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder> 
     </div> 
    </ItemTemplate> 
</asp:Repeater> 

Код:

((HtmlGenericControl)e.Item.FindControl("divIcon")).ID = NavURL; 

if (secondFirstRun) 
{ 
    ((HtmlGenericControl)e.Item.FindControl("divIcon")).Attributes.Add("class", "active tab-pane overflow-auto"); 
} 

Установка ID отлично работает, но установка активного атрибута падает с:

Object reference not set to an instance of an object. 

На атрибут добавления строки

+0

Откуда берутся данные? Нет ли данных, связанных со второй попыткой? –

ответ

0

Вы меняете идентификатор элемента управления, который, вероятно, не требуется, и lster обращается к элементу управления со старым идентификатором. вы должны использовать NavURL вместо divIcon. Вы лучше сохраните divIcon в каком-то объекте, а затем используете его.

HtmlGenericControl htmlGenericControl = ((HtmlGenericControl)e.Item.FindControl("divIcon")).ID = NavURL; 

if (secondFirstRun) 
{ 
     htmlGenericControl .Attributes.Add("class", "active tab-pane overflow-auto"); 
} 
Смежные вопросы