我正在使用嵌套中繼器。我渲染了幾個組,每個組都有我需要渲染出不同屬性的成員。Page cycle問題asp.net
我在嵌套中繼器上使用ItemDataBound來找出嵌套中繼器當前正在渲染哪個成員。我在.aspx中有<%%>標籤,用於檢查當前用戶是否具有某個特定屬性,如果具有,我會呈現需要去那裏的div和其他HTML元素。
所有的數據都是正確的。當我調試我收集正確的數據,我得到正確的信息關於用戶是誰和用戶有什麼屬性。我將當前評估的用戶保存在一個受保護的字符串currentRenderedUser中,用於查找用戶在aspx文件中的用戶。
問題是,當aspx得到評估時,中繼器已經經歷了所有集合或其他事情,因爲currentRenderedUser在aspx文件中的每個評估期間都是相同的。
我不知道aspx文件中「<%%>」代碼的正確術語,對不起。
這是ASPX的相關部分(我認爲):
<ItemTemplate>
<!-- nested repeater data -->
<tr>
<td width="50%"><div class="memberName"><%# DataBinder.Eval(Container.DataItem, "userEmail")%></div></td>
<div style="display: none;"></div>
<% if (CheckIfUserIsAdmin(email, currentRenderedGroup))
{ %>
<%if (CheckIfUserIsAdmin(currentRenderedUser, currentRenderedGroup))
{ //Checks so that the user being rendered isn't already admin%>
<td><div style="margin-right:30px;" class="makeAdminButton"></div></td>
<% }
else
{%>
<td><div style="margin-right:30px;" class="makeAdminButton"><asp:ImageButton ID="ImageButtonMakeUserAdmin" CommandName="MakeAdmin" BorderWidth="0" ImageUrl="~/gfx/doAdmin.png" CommandArgument='<%#Convert.ToString(DataBinder.Eval(Container.DataItem, "userEmail")) + " " + Convert.ToString(DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "groupId"))%>' runat="server" AlternateText="Make admin" /></div></td>
<td><div class="removeUserButton"><asp:ImageButton ID="ImageButtonRemoveUserFromGroup" CommandName="RemoveUserFromGroup" BorderWidth="0" ImageUrl="~/gfx/can.png" CommandArgument='<%# Convert.ToString(DataBinder.Eval(Container.DataItem, "userEmail")) + " " + Convert.ToString(DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "groupId"))%>' runat="server" AlternateText="Delete" /></div></td>
<% } %>
<%}%>
</tr>
</ItemTemplate>
這是評估當前用戶後端的部分:
protected void NesterRepeater_ItemDataBound(object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem
|| e.Item.ItemType == ListItemType.Item)
{
DataRowView dataRowView = (DataRowView)e.Item.DataItem;
string memberInGroup = Convert.ToString(dataRowView["userEmail"]);
currentRenderedUser = memberInGroup;
}
}
我怎樣才能用更好的(或至少是工作的)方式解決這個問題? 謝謝
非常感謝!我已經在這個幾個小時了..完美!這個確切的解決方案很好。 – Phil 2010-11-07 18:50:39