2011-02-02 49 views
0

我想獲得一個asp:文字工作,但顯然我做錯了什麼,因爲我正在一個ASP文字工作不

對象Referece未設置爲對象的實例

錯誤

這是我的代碼:

在ASCX頁

<span class="span1"> 
    <asp:Literal ID="litFile" runat="server"></asp:Literal> 
    <strong><asp:Literal ID="litFile2" runat="server"></asp:Literal></strong> 
</span> 

在ascx.cs頁:

protected void _ItemBound(object sender, RepeaterItemEventArgs e) 
{ 
    ((Literal)e.Item.FindControl("litFile")).Text = "a"; 
} 

任何想法嗎?

C

+0

你能告訴我們更多的代碼嗎?這是在網格中的文字?你想要做什麼事件處理程序? – kevev22 2011-02-02 15:52:27

回答

0

您不應該需要轉換它,也不應該搜索它。

儘量只:

litFile.Text = "a"; 

如果這行不通,我們需要看到更多的代碼來找出發生了什麼事情。

+0

如果它在中繼器中,他需要搜索它。 – 2011-02-02 15:58:27

1

我們需要更多的代碼才能確定,但​​是這對我來說是什麼樣子,它實際上是在發射方法的中繼器之外。否則,e.Item.FindControl應該能夠找到它。確保litFile位於您的轉發器控件中的ItemTemplate之內,而不是頁面中的其他位置。

0

由於您使用的FindControl我假設你在一箇中繼器或東西,所以嘗試在VB這個

Literal litFile = repeaterName.FindControl("litFile"); 
litFile.text = "a"; 

我的代碼很抱歉,如果我的語法是關閉的。

+0

幾個問題:Literal必須位於重複器的模板之一(itemtemplate,headertemplate等)中,所以`FindControl`方法必須來自`repeaterName.HeaderTemplate`或`e.Item`事件處理程序,這相當於他發佈的內容。你還需要顯式的轉換(`(Literal)`部分)以避免編譯器錯誤。 – 2011-02-02 17:17:34