ASP.NET: То, как получить доступ к повторителю, генерировало входные элементы формы?

Если я правильно понимаю ваш вопрос, вам просто нужно составить полный, конкретный селектор CSS, например, div.side_categories ul li a.

Например:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JSoupTest {
    public static void main(String[] args) {
        String markup =
                "<div class=\"side_categories\">" +
                  "<ul>" +
                    "<li>" +
                      "<a href=\"#\">Link 1</a>" +
                    "</li>" +
                    "<li>" +
                      "<a href=\"#\">Link 2</a>" +
                    "</li>" +
                  "</ul>" +
                "</div>";

        Document doc = Jsoup.parse(markup);
        Elements links = doc.select("div.side_categories ul li a");

        for (Element link : links) {
            System.out.println(link);
        }
    }
}

Результат:

<a href="#">Link 1</a>
<a href="#">Link 2</a>
10
задан Ian Boyd 8 October 2008 в 15:16
поделиться

3 ответа

Используйте управление сервером вместо того, чтобы делать элемент управления вводом runat=server

 <asp:CheckBox id="whatever" runat="Server" />

Когда Вы устанавливаете значение в своем ItemDataBound, Вы используете FindControl

CheckBox checkBox = (CheckBox)e.Item.FindControl("whatever");
checkBox.Checked = true;

Когда Вы получаете объекты, Вы также используете FindControl от объекта в конструкции foreach. Кроме того, в зависимости от того, как Вы связали с данными его, DataItem больше не может быть там после обратной передачи.

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Item 
        || item.ItemType == ListItemType.AlternatingItem) 
    { 
        CheckBox checkBox = (CheckBox)item.FindControl("whatever");
        if (checkBox.Checked)
        { /* do something */ }
    }
}
  • Многие люди соблазняются 'безопасному броску' использование as оператор с FindControl(). Мне не нравится это, потому что при изменении имени элемента управления на форме можно тихо проигнорировать ошибку разработки и мешать разыскивать. Я пытаюсь только использовать as оператор, если управление, как гарантируют, не будет там.

Обновление для: Который CheckBox который? В представленном HTML Вы закончите тем, что имели все они имя флажка как

ctl00_cph0_ParentContainer_MyRepeater_ctl01_MyCheckbox
ctl00_cph0_ParentContainer_MyRepeater_ctl02_MyCheckbox
ctl00_cph0_ParentContainer_MyRepeater_ctl03_MyCheckbox

Вы не заботитесь о том, что имена то, потому что foreach объект. FindControl () получает их для Вас, и Вы ничего не должны принимать о них. Однако, когда Вы выполняете итерации через foreach, Вам обычно нужен способ сослаться на тот назад к чему-то. Большую часть времени это сделано, также имея asp:HiddenField контроль вместе с каждым CheckBox для содержания идентификатора для соответствия ему назад до корректного объекта.

Примечание по безопасности:: существует проблема безопасности с использованием скрытых полей, потому что скрытое поле может быть изменено в JavaScript; всегда будьте сознательны, что это значение, возможно, было изменено пользователем, прежде чем форма была отправлена.

13
ответ дан 3 December 2019 в 19:36
поделиться

Вы могли бы найти легче использовать управление CheckBoxList.

В простом случае Вы установили бы DataTextVield и DataValueField к имени и значению, как вытянуто от Вашего источника данных (предполагающий, что Вы заполняете от источника данных), и затем обяжите это создавать объекты.

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

4
ответ дан 3 December 2019 в 19:36
поделиться

Вот конкретный код для обработки скрытого поля:

MARKUP:

<asp:HiddenField ID="repeaterhidden" Value='<%# DataBinder.Eval(Container.DataItem, "value")%>' runat="server" >

C #:

{

HiddenField hiddenField = (HiddenField)item.FindControl(repeaterStringhidden);

{ /* do something with hiddenField.Value */

}

2
ответ дан 3 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: