页面循环问题asp.net
我正在使用嵌套的中继器。我渲染了几个组,每个组都有我需要渲染不同属性的成员。
我在嵌套转发器上使用ItemDataBound来找出嵌套转发器当前呈现的成员。我在.aspx中有< %%>标签,用于检查当前用户是否具有某个属性,如果有,我会渲染需要去那里的div和其他HTML元素。
所有数据都是正确的。当我调试时,我会收集正确的数据,并获得有关用户是谁以及用户具有哪些属性的正确信息。我将当前评估的用户保存在受保护的字符串currentRenderedUser中,我用它来查找用户在aspx文件中的用户。
问题是,当aspx上的< %%>被评估时,转发器已经遍历了所有的集合或者某些东西,因为currentRenderedUser在aspx文件的每个evalutaion期间是相同的。
对不起,我不知道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;
}
}
如何以更好(或至少,工作)的方式解决这个问题?
谢谢
没有找到相关结果
已邀请:
1 个回复
镰茧钩
而背后的代码:
如果你为了可维护性原因而绑定我在代码中写的2 PlaceHolder控件内的数据会更好。 HTH