Здравствуйте, cooler2003, Вы писали:
C>Ну есть класс ...
C>елементами класса являются: строка и ерейлист переменных другого класса(состоит из двух строк).
C>Так вот надо вот это отобразить с помощью одного репитера ...
1. Если вложенный ArrayLIst всегда состоит из двух строк — не проблемма.
aspx:
<table>
<asp:Repeater id=Repeater1 runat="server">
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem,"Name")%></td>
<td>
<%#((ArrayList)DataBinder.Eval(Container.DataItem,"Roles"))[0]%><br>
<%#((ArrayList)DataBinder.Eval(Container.DataItem,"Roles"))[1]%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
cs:
.......
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
ArrayList list= new ArrayList();
list.Add( new Source("John"));
list.Add( new Source("Sara"));
Repeater1.DataSource=list;
Repeater1.DataMember="Source";
Repeater1.DataBind();
}
}
......
public class Source
{
protected string m_sName;
public string Name
{
get
{
return m_sName;
}
set
{
m_sName=value;
}
}
protected ArrayList roles=new ArrayList();
public ArrayList Roles
{
get
{
return roles;
}
set
{
roles= value;
}
}
public Source(string sName)
{
Name=sName;
roles.Add("admin");
roles.Add("User");
}
}
2.можно в классе стараницы объявить функцию
public string GetStringFromArrayList(ArrayList list)
{
string s=""
foreach (object o in list)
{
s+=o.ToString()+"<br>";
}
return s;
}
а в темплейт добавить :
<td>
<%#GetStringFromArrayList(((ArrayList)DataBinder.Eval(Container.DataItem,"Roles")))%>
</td>
3. Иначе придется использовать вложенный репитер.
... << RSDN@Home 1.1 beta 2 >>