2011-02-02 52 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