2015-06-10 60 views
0

的時候我有一個不同的表現較同業一個asp.net頁面,我似乎無法找出原因。ASP:文字不範疇內放置的ItemTemplate直放站

可悲的是我不能發佈有很多出於商業原因的代碼,我知道,這將限制用戶的協助能力。

我有一個網頁,我有一個隱藏的和一個複選框和其他不重要的事情。

喜歡的東西:

<asp:Repeater id="GoodRepeater" runat="server" OnItemDataBound="GoodRepeater_OnItemDataBound"> 
    <ItemTemplate> 
    <asp:Literal id="litHappyLiteral" runat="server" /> 
    <!-- Other junk that doesn't matter --> 
    </ItemTemplate> 
</asp:Repeater> 

在另一頁但是,我也有同樣的設置,但由於某種原因,每當我把一個ItemTemplate模板裏,它丟棄了我的背景,並可以不再到達代碼隱藏。例如:

<asp:Repeater id="RepeaterThatMakesMeSad" runat="server" OnItemDataBound="RepeaterThatMakesMeSad_OnItemDataBound"> 
    <ItemTemplate> 
    <asp:Literal id="litSadLiteral" runat="server" /> 
    <!-- Other junk that doesn't matter --> 
    </ItemTemplate> 
</asp:Repeater> 

在第一頁上,litHappyLiteral是由代碼背後的可到達,但在另外一個litSadLiteral不是。

任何想法? 使用asp.net 3.5。

這裏有儘可能多的我隱藏的,因爲我可以分享:

protected void RepeaterThatMakesMeSad_OnItemDataBound(object sender, RepeaterItemEventArgs e) { 
// Logging junk 
// Guard clauses 
try { 
    XmlNode myItem = (e.Item.DataItem as XmlNode); 

    if(myItem != null) { 
    litSadLiteral.Text = "SADNESS."; 
    } // End if 
} // end try 
} // method 

在這些條件下,「litSadLiteral」並不在當前的背景下存在。


我想通了,我在做什麼錯了(見下文回答),但如果有人仍然願意解釋爲什麼文字滴出來的可達範圍內的,只要它被放置的一個ItemTemplate的範圍內一個直放站,我會很感激。

+0

你能分享你的代碼嗎? – shana

+0

RepeaterThatMakesMeSad是否可訪問?你在使用母版嗎? –

+0

RepeaterThatMakesMeSad是否可訪問? - 是的。 使用母版頁? - 是的。 –

回答

0

我意識到發生了什麼事情。

在我的「工作」例如,我沒有直接到達我的文字。我'先搜索'。

在工作之一,我不只是有:

litHappyLiteral.Text = "Happy!"; 

我實際上有:

Literal litHappyLiteral = (e.Item.FindControl("litHappyLiteral") as Literal); 
if(litHappyLiteral != null) { 
    litHappyLiteral.Text = "Happy!"; 
} 

現在,我做的是對其他網頁一切正常。 抱歉佔用大家的時間。

我不知道這裏的過程肯定,我應該刪除這個問題,或者把它留給在此情況下,錯誤/解決方案可以幫助別人的未來?