Как я могу получить значение из словаря, используя ItemIndex повторителя? - PullRequest
1 голос
/ 01 февраля 2012

Мне дали страницу, которую нужно изменить, и на ней есть Repeater с ItemTemplate, который содержит поля для ввода адреса человека.Каждое поле адреса выглядит примерно так:

<input type="text" id="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>" 
    name="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>" />

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

В Code-behind у нас есть класс DataProxy, который в основном представляет собой словарь, построенный на основе Request.Params, и мы обычно используем его для повторного заполнения формы, введенной пользователем.Например, они помещают данные в форму, отправляют ее, но проверка не проходит, потому что пара полей пуста, но мы хотим повторно заполнить то, что они ввели ранее.Мы сделаем это так:

<input type="text" name="myTextBox" id="myTextBox" 
    value="<%: DataProxy["myTextBox"].ToString() %>" />

Обычно это прекрасно работает, но внутри этого повторителя это не работает, и я считаю, что это потому, что DataBind для повторителя происходит после того, как мы уже выполнили поиск в словаре DataProxy для нашегозначение.Это код, который я использую:

<input type="text" id="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>" 
    name="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>"
    value="<%# DataProxy["line1" + (((RepeaterItem)Container).ItemIndex + 1).ToString()] %>" />

Есть ли способ получить доступ к своему словарю DataProxy с помощью свойства ItemIndex из репитера?

Просто заметка, мой репитербудучи привязанным к данным в Page_Load ().

1 Ответ

0 голосов
/ 01 февраля 2012

Преобразовать словарь в список,

Dictionary<string, object> dataProxy = new Dictionary<string, object>();
List<KeyValuePair<string, object>> list = dataProxy.ToList();

Однако вы, вероятно, захотите убедиться, что данные отсортированы, чтобы ваш репитер постоянно отображался.

...