Nano Hash - криптовалюты, майнинг, программирование

Невозможно получить доступ к элементу управления, который находится в ретрансляторе, из кода позади

Я пытаюсь получить доступ к метке asp в репитере asp из моего файла кода. вот что я сделал до сих пор:

    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource1" OnItemDataBound="outerFunction">
        <HeaderTemplate>
            <h1>Questions And Answers</h1>
        </HeaderTemplate>

        <ItemTemplate>
             <p style="background-color:Red; color:Yellow;"><%#Eval("QText") %> :::::::::</p>
            <asp:HiddenField ID="HiddenField1" runat="server" Value='<%# setQID(Eval("QID"))%>' />

            <asp:Label ID="pageLabel" runat="server" Text="Label"></asp:Label>

             <asp:Repeater ID="Repeater1" runat="server" DataSourceID="LinqDataSource2">
                 <HeaderTemplate>

                 </HeaderTemplate>
                 <ItemTemplate>



                    <%# (GetAnswer(Eval("AnsQID"))) != 1 ? (displayAnswer(Eval("AText"))) : ""%>


                </ItemTemplate>

                <FooterTemplate>

                </FooterTemplate>

            </asp:Repeater>

            <span style="display:block; border-top:1px solid Gray;"></span>
        </ItemTemplate>
    </asp:Repeater>

* Вот мой код *

public void outerFunction(object sender, RepeaterItemEventArgs  e)
    {
       Label myLabel =  (Label) e.Item.FindControl("pageLabel");
       myLabel.Text = "HELLO World";
    }

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

Спасибо !

08.12.2011

  • Это просто совет, но, на мой взгляд, для удобства чтения кода вашим обработчикам событий проще назвать ‹Control› _ ‹Event›: Repeater1_ItemDataBound. Чтение имени говорит само за себя. 08.12.2011
  • Благодарность ! я буду иметь это в виду в следующий раз! 08.12.2011

Ответы:


1

Ваш код выглядит хорошо, за исключением того, что вы не проверяете тип строки, в которой находитесь:

public void outerFunction(object sender, RepeaterItemEventArgs  e)
 {
      if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
      {
         Label myLabel =  (Label) e.Item.FindControl("pageLabel");
         myLabel.Text = "HELLO World";
      }
 }
08.12.2011
  • большое спасибо ! это делает свою работу! это работает и для общих элементов управления html? 08.12.2011
  • @ShaneAdrianMuaz: Да, пока вы добавляете runat="server" в разметку общего элемента управления. 08.12.2011
  • Спасибо! В моем случае это был OnItemDataBound ретранслятора. 05.07.2018

  • 2

    Поскольку у вас есть шаблон заголовка, который не содержит "pageLabel", вы получите ошибку нулевой ссылки, когда эта часть повторителя привязана к данным.

    Поместите часть метки в блок if:

    if (e.Item.ItemType == ListItemType.Item)
    {
    ...
    }
    

    Если вы используете AlternatingItemTemplate, вы также захотите включить это:

    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
        ...
        }
    
    08.12.2011

    3

    способ, которым вы сейчас занимаетесь, небезопасен, когда обрабатываемый в данный момент элемент является верхним или нижним колонтитулом, метка находится в ItemTemplate, поэтому будет доступна только для DataItems, попробуйте следующее:

    public void outerFunction(object sender, RepeaterItemEventArgs  e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            Label myLabel =  (Label) e.Item.FindControl("pageLabel");
            myLabel.Text = "HELLO World";
        }
    }
    
    08.12.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..