Ich habe ein Steuerelement, das über einen Repeater verfügt, rptReferrals, der eine Liste von Entity-Objekten, Referrals durchläuft. Das Referrals-Objekt verweist auf eine andere Tabelle namens Answers, die eine Liste der Antworten enthält, die für den Benutzer gesendet wurden. rptReferrals bindet einen Child-Repeater, rptQuestionnaire, an eine Liste von Fragen für die Person, mit der ich angemeldet bin, die nicht mit dem Referrals-Objekt verbunden ist, an das sie gebunden ist. HierZugriff auf übergeordnete Repeater DataItem-Eigenschaft
ist der aspx-Code:
<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>
Der Backend-Code:
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????
}
}
Das Problem, das ich habe, ist, dass die Liste der Fragen sind nicht erforderlich, und ich brauche alle Fragen angezeigt werden unabhängig davon, ob der Benutzer sie beantwortet hat oder nicht. Aber wenn sie es beantwortet haben, muss ich die Antwort anzeigen, welche die Eigenschaft ist, die an rptReferrals angehängt ist.
Haben Sie Ideen, wie Sie auf eine Eigenschaft des Datenelements meines übergeordneten Repeaters zugreifen können? Ich werde an dieser Stelle keine Antwort geben.
ich vor ein paar Wochen hatte dieses Problem und eine Frage gestellt. [Hier prüfen] (http://stackoverflow.com/questions/15137029/accessing-a-nested-repeaters-datasource) –
Ich würde den Inhalt des äußeren Repeater in ein separates Benutzersteuerelement legen, dann können Sie es geben Eigenschaft mit dem gewünschten Namen für das Datenelement. Ich würde sagen, dass es im Allgemeinen eine gute Idee ist, da der Name 'Container.DataItem' sich auf zwei verschiedene Dinge bezieht, ist verwirrend. – millimoose