从后面的代码中引用控件id,该代码位于中继器中

本文关键字:代码 中继器 id 引用 控件 | 更新日期: 2023-09-27 18:15:02

本周我遇到了一个问题,试图确定使用什么控件能够以非网格方式显示来自多个数据源的数据。感谢这个论坛,我了解到,最好的方法是使用一个中继器与不同的控制,如标签和表内的中继器。不太确定我将如何实现这一切,但我需要学习的第一件事是如何改变从表和标签后面的代码文本,我将有内部的中继器。我仔细阅读了一下,发现下面的方法应该是可行的。

for (int i = 0; i <= Repeater1.Items.Count - 1; i++)
            {
                Label labelCustomerID = (Label)Repeater1.Items[i].FindControl("labelCustomerID");
                labelCustomerID.Text = "from code Behind";
            }

我的声明性语法是这样的:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
    <ItemTemplate>
            <hr/>
            <asp:Label runat="server" ID="labelCustomerId"  />
            <div style="padding-left:150px">
                <asp:Label runat="server" ID="labelCustomerName" />
                <asp:Label runat="server" ID="labelCustomerAddress" />
                <asp:Label runat="server" ID="labelCityState" />    
            </div>
            <asp:GridView runat="server" ID="gridViewRecordData">
            </asp:GridView>
            <hr/>
        </ItemTemplate>
 </asp:Repeater>

多亏了EdB,我才走到这一步。还不确定我将如何填充gridview与数据的一个记录,但首先的事情…我需要能够改变标签的文本。如果我能完成那件事,我相信其余的事情也会水到渠成。

请帮帮我!:)戴尔

从后面的代码中引用控件id,该代码位于中继器中

试试下面的代码:

for (int i = 0; i <= Repeater1.Items.Count - 1; i++) 
        {
            if(Repeater1.Items[i].ItemType == ListItemType.Item || Repeater1.Items[i].ItemType == ListItemType.AlternatingItem)
            {
                Label labelCustomerID = (Label)Repeater1.Items[i].FindControl("labelCustomerID"); 
                labelCustomerID.Text = "from code Behind"; 
            }
        } 

我认为您在填充中继器之前引用了它。