У меня есть элемент управления, который имеет ретранслятор rptReferrals, который проходит через список объектов Entity, Referrals. Объект Referrals имеет ссылку на другую таблицу под названием «Ответы», которая представляет собой список ответов, полученных для пользователя. rptReferrals свяжет дочерний повторитель, rptQuestionnaire с Перечнем вопросов для человека, с которым я вошел, и который не связан с объектом рефералов, к которому он привязан.Доступ к родительским репитерам Свойство DataItem
Вот код ASPX:
<asp:Repeater runat="server" ID="rptReferrals" OnItemDataBound="rptReferrals_OnItemDataBound">
<ItemTemplate>
//some HTML for the referral object
<asp:Repeater runat="server" ID="rptQuestionnaire" OnItemDataBound="rptQuestionnaire_OnItemDataBound">
//some HTML for displaying questions and answers
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Код бэкенд:
protected void rptReferrals_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
//THIS IS THE ITEM THAT HAS THE LIST OF ANSWERS I NEED
var data = e.Item.DataItem as PatientReferral;
var rptQuestionnaire = e.Item.FindControl("rptQuestionnaire") as Repeater;
rptQuestionnaire.DataSource = QuestionList;
rptQuestionnaire.DataBind();
//QuestionList is a list of questions populated on page load.
// I can't bind to the property of data.Answers because not
//all questions are answered. data.Answers is only a list of
//the questions answered
}
}
protected void rptQuestionnaire_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Need to access the data.Answers object from above. HOW????
}
}
Проблема, которую я имею, что список вопросов не требуется, и мне нужно, чтобы отобразить все вопросы независимо от того, ответил ли пользователь на это или нет. Но если они ответили на него, мне нужно отобразить ответ, который является собственностью, связанной с rptReferrals.
Любые идеи о том, как получить доступ к свойству dataitem моего родительского ретранслятора? Я отвечу на этот вопрос.
Я имел эту проблему несколько недель назад, и задал вопрос. [Check here] (http://stackoverflow.com/questions/15137029/accessing-a-nested-repeaters-datasource) –
Я бы поместил содержимое внешнего репитера в отдельный пользовательский элемент управления, тогда вы можете дать ему свойство с любым именем, которое вы хотите для элемента данных. Я бы сказал, что это хорошая идея в целом, потому что имя «Container.DataItem» относится к двум различным вещам, это сбивает с толку. – millimoose