ссылка на идентификаторы управления из кода, который находится в ретрансляторе - PullRequest
2 голосов
/ 18 ноября 2011

На этой неделе у меня возникла проблема с попыткой определить, какой элемент управления использовать, чтобы иметь возможность отображать данные из нескольких источников в виде, не похожем на сетку. Благодаря этому форуму я узнал, что лучшим способом будет использование повторителя с различными элементами управления, такими как метки и таблицы внутри повторителя. Не совсем уверен, как именно я все это осуществлю, но первое, что мне нужно узнать, это как изменить текст из кода позади таблицы и метки, которую я буду иметь внутри повторителя. Я прочитал и обнаружил, что следующее должно работать. но это не так.

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 голосов
/ 23 ноября 2011

Я думаю, что вы ссылаетесь на репитер, прежде чем он будет заполнен.

0 голосов
/ 18 ноября 2011

Попробуйте с этим кодом:

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

        } 
...