C# 如何显示包含单个对象和子列表(对象)的列表(对象)?
由于服务器上的环境限制,仅限于使用.Net framework的v2.0(我们使用VB.Net) 我有一个ASP.net网页,它从对active directory中的用户帐户进行检查的Web服务中提取数据。操作员可以使用web界面一次检查多个帐户。webservice返回(AccountCheck)对象列表,这些对象本身包含单个属性,如用户名、电子邮件地址,以及(AccountError)对象列表(包含多个属性) 因此,帐户检查对象如下所示:C# 如何显示包含单个对象和子列表(对象)的列表(对象)?,c#,.net,asp.net,vb.net,.net-2.0,C#,.net,Asp.net,Vb.net,.net 2.0,由于服务器上的环境限制,仅限于使用.Net framework的v2.0(我们使用VB.Net) 我有一个ASP.net网页,它从对active directory中的用户帐户进行检查的Web服务中提取数据。操作员可以使用web界面一次检查多个帐户。webservice返回(AccountCheck)对象列表,这些对象本身包含单个属性,如用户名、电子邮件地址,以及(AccountError)对象列表(包含多个属性) 因此,帐户检查对象如下所示: Username FriendlyName Ema
Username
FriendlyName
Email
AccountError1 > Message > Weight > ResolverTeam > etc
AccountError2 > Message > Weight > ResolverTeam > etc
AccountError3 > Message > Weight > ResolverTeam > etc
AccountError4 > Message > Weight > ResolverTeam > etc
AccountError5 > Message > Weight > ResolverTeam > etc
Username
FriendlyName
Email
AccountError1 > Message > Weight > ResolverTeam > etc
AccountError2 > Message > Weight > ResolverTeam > etc
AccountError3 > Message > Weight > ResolverTeam > etc
AccountError4 > Message > Weight > ResolverTeam > etc
AccountError5 > Message > Weight > ResolverTeam > etc
Username
FriendlyName
Email
AccountError1 > Message > Weight > ResolverTeam > etc
AccountError2 > Message > Weight > ResolverTeam > etc
AccountError3 > Message > Weight > ResolverTeam > etc
AccountError4 > Message > Weight > ResolverTeam > etc
AccountError5 > Message > Weight > ResolverTeam > etc
protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
//pass index of item in command argument
int itemIndex = Convert.ToInt32(e.CommandArgument);
//find the pnlChildView control
Panel childViewPanel = (Panel)DataList1.Items[itemIndex].FindControl("pnlChildView");
if (childViewPanel != null)
{
//toggle visibility of childViewPanel and bind child list if panel is visible
if (childViewPanel.Visible)
{
DataList childList = childViewPanel.FindControl("DataList2");
if (childList != null)
{
int keyValue = (int)DataList1.DataKeys[itemIndex];
//bind the list using DataList1 data key value
childList.DataSource = <DATA SOURCE>; //get data using keyValue
childList.DataBind();
}
}
}
}
等
我想做的是使用某种转发器,创建多个面板或div,其中包含显示用户名、电子邮件等的标签,以及一个绑定了accounterror列表以显示所有错误的gridview。用户可以同时检查2、5、7个帐户,并且是动态的
最好的方法是什么?您需要嵌套两个列表控件;例如,中继器和gridview,或者中继器和中继器,取决于您对布局的控制程度。相关部分是将内部控件的数据源数据绑定到内部列表:
<asp:Repeater ...>
<ItemTemplate>
<%# Eval("Username") %>
...
<asp:GridView DataSource='<%# Eval("AccountErrors") %>' ...>
...
</asp:GridView>
</ItemTemplate>
</asp:Repeater>
...
...
您可以使用数据列表尝试以下操作:
<table width="595px">
<asp:DataList BackColor="#ffffff" id="DataList1" DataKeyField="<ID>" OnItemDataBound="DataList1_ItemDataBound" runat="server" Width="100%">
<ItemTemplate>
<tr>
<td>
<asp:LinkButton ID="LinkButton1" runat="server" Text="+" OnCommand="LinkButton1_Command" CommandArgument='<%#Container.ItemIndex%>'></asp:LinkButton>
</td>
<td><%#Eval("<COLUMN NAME>")%></td>
<td><%#Eval("<COLUMN NAME>")%></td>
<td><%#Eval("<COLUMN NAME>")%></td>
</tr>
<asp:Panel ID="pnlChildView" runat="server">
<asp:DataList ID="DataList2" runat="server" Width="100%">
<ItemTemplate>
<tr>
<td><%#Eval("<CHILD OLUMN NAME>")%></td>
<td><%#Eval("<CHILD COLUMN NAME>")%></</td>
<td><%#Eval("<CHILD COLUMN NAME>")%></</td>
</tr>
</ItemTemplate>
</asp:DataList>
</asp:Panel>
</ItemTemplate>
</asp:DataList>
</table>
带有用于错误消息的嵌套转发器的转发器使用此方法获取错误“服务器标记不能包含构造”。不过看起来很简单。@Tom Pickles:你确定你在这个工作完成后得到了
:DataSource=''。谢谢你的帮助。