本周,我遇到了一个问题,即尝试确定要使用哪种控件才能以非网格的方式显示来自多个数据源的数据。多亏了这个论坛,我才知道最好的方法将是使用具有不同控件(例如,转发器中的标签和表格)的转发器。不太确切地知道如何实现所有这些,但是我需要学习的第一件事是如何从转发器内部的表和标签后面的代码中更改文本。我已经阅读并发现以下方法应该可行。但事实并非如此。

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,但首先要注意的是……我需要能够更改标签的文本。如果我能做到这一点,我相信其余的将就位。

请帮我! :)
戴尔

最佳答案

尝试使用以下代码:

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

        }

关于c# - 从转发器中的后面代码引用控件ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8184987/

10-13 00:01