Re[3]: Вопрос по Repeater-у ...
От: mogadanez Чехия  
Дата: 10.12.03 16:09
Оценка: 6 (1)
Здравствуйте, 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 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.