从转发器中的代码引用控件ID

时间:2011-11-18 15:44:58

标签: c# gridview repeater code-behind sqldatasource

本周我遇到了一个问题,即尝试确定使用什么控件来以非网格方式显示来自多个数据源的数据。感谢这个论坛,我了解到最好的方法是使用具有不同控件的Repeater,例如转发器内的标签和表格。我不太清楚我将如何实现它所有已实现但我需要学习的第一件事是如何更改表格后面的代码和我将在转发器中的标签。我已经阅读并发现以下内容应该有效。但它没有。

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,但首先要做的事情......我需要能够更改标签的文本。如果我能做到这一点,我相信其余部分将落实到位。

请帮帮我! :) 戴尔

2 个答案:

答案 0 :(得分:0)

尝试使用此代码:

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"; 
            }

        } 

答案 1 :(得分:0)

我认为你在转发器填充之前就引用了转发器。