2014-10-02 9 views
1

У меня есть Repeater, который загружает некоторые данные из базы данных SQLПолучить динамические элементы управления и текст в Repeater

<asp:Repeater ID="Repeater" runat="server" OnItemDataBound="Repeater_ItemDataBound"> 
    <ItemTemplate> 
     <asp:Label ID="QuestionLabel" runat="server" Text=""></asp:Label> 
     <asp:TextBox ID="AnswerLabel" runat="server"></asp:TextBox> 
    </ItemTemplate> 
</asp:Repeater> 

<asp:Button ID="AnswerSubmit" runat="server" Text="Insert"/> 

В коде позади, я могу назначить, чтобы получить вопросы на другую кнопку мыши, чтобы загрузить и связать Repeater. В ItemDataBound я нахожу элементы управления и присваиваю вопросы метке.

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

Сначала я попробовал это в случае нажатия кнопки

foreach (RepeaterItem item in Repeater.Items) 
{ 
    Label QuestionLabel = (Label)item.FindControl("QuestionLabel"); 
} 

, но не смог найти QuestionLabel. Если посмотреть на источник страницы, я полагаю, что это связано с тем, что ярлык имеет другое значение (QuestionLabel_0, QuestionLabel_1 и т. Д.), Поэтому он пытается найти способ приблизиться к этому?

Редактировать

protected void QuestionButton_Click(object sender, EventArgs e) 
    { 
     Repeater.DataSource = QuestionsByID(ID); 
     Repeater.DataBind(); 
    } 
+0

что вы пытаетесь достичь, вероятно, вы не даже не нужно .net управления в ретранслятор. Просто попробуйте использовать элементы html. –

ответ

1

Вы see

foreach (RepeaterItem item in Repeater.Items) 
{ 
    if (item.ItemType == ListItemType.Item 
     || item.ItemType == ListItemType.AlternatingItem) 
    { 
     Label QuestionLabel = (Label)item.FindControl("QuestionLabel"); 
    } 
} 
+0

Да, я видел это, но QuestionLabel всегда имеет значение null при событии нажатия кнопки? – Computer

+0

Можете ли вы разместить свой код, где связывает данные? – Fabio

+0

Добавлено в исходное сообщение – Computer

Смежные вопросы