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

Доступ к SelectedItem из DDL в ItemCommand повторителя

Всем привет! Я пытаюсь получить доступ к значению SelectedItem из раскрывающегося списка, который находится в Repeater, но получаю исключение Null Exception. Этот повторитель будет перебирать более 10 «продуктов». Вот код из моей веб-формы:

 <asp:repeater ID="rptProducts" runat="server" OnItemDataBound="rptProducts_ItemDataBound" OnItemCommand="rptProducts_ItemCommand">
                <ItemTemplate>
                    <div class="col-md-8 col-md-offset-2 product">
                        <img src="<%# Eval("ImageFile") %>" class="col-xs-12" alt="<%# Eval("Name") %> Product Image"/>
                        <h3><%# Eval("Name") %></h3>
                        <p><%# Eval("ShortDescription") %></p>
                        <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
                        <asp:Button ID="Button1" runat="server" Text="Add to Cart" CommandName="click" CommandArgument='<%# Eval("Name") %>' UseSubmitBehavior="false" />
                     </div>
                </ItemTemplate> 
        </asp:repeater>

И код из файла .cs, где я пытаюсь получить доступ к значению SelectedItem DropDownList1.

protected void rptProducts_ItemCommand(object sender, CommandEventArgs e)
{
    Repeater rpt = (Repeater)sender;
    DropDownList productDDL = (DropDownList)rpt.Items[0].FindControl("DropDownList1");
    int Qty = Convert.ToInt32(productDDL.SelectedItem.Text);

    Debug.WriteLine(rpt.ID);

    if (e.CommandName == "click")
    {
        Debug.WriteLine("Clicked " + e.CommandArgument.ToString() + "; Quantity: " + Qty);
    }

}

Исключение выдается в этой строке:

int Qty = Convert.ToInt32(productDDL.SelectedItem.Text);

Я пытаюсь подготовить эти данные для передачи в состояние сеанса, поэтому я проверяю, чтобы убедиться, что они доступны. Есть ли что-то, что мне не хватает, или лучший способ получить доступ к этому конкретному значению?

22.04.2018

  • Где вы связываете DropDownList1 и rptProducts с данными? 23.04.2018
  • Это было сделано в ItemDataBound 23.04.2018

Ответы:


1

В случае rptProducts_ItemCommand вы используете фиксированный индекс элемента 0, вам нужно выбрать элемент, который запускает команду элемента.

Ниже строки кода будет выбран текущий активированный элемент.

DropDownList productDDL = (DropDownList)((RepeaterCommandEventArgs)e).Item.FindControl("DropDownList1");
22.04.2018
  • Это сузило и увело меня от Null Exception, но SelectedItem всегда является вариантом по умолчанию, использующим это. Я даже пытался поместить его в UpdatePanel, чтобы остановить полное обновление страницы. 23.04.2018
  • В моем Page_Load я не проверял (!Page.IsPostBack), поэтому ваше изменение вместе с этим решило проблему. Большое спасибо! Ваше здоровье :) 23.04.2018
  • Новые материалы

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

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

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

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

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

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

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