DataRepeater без субконтроля - PullRequest
0 голосов
/ 11 ноября 2009

Как правильно сделать это в элементе управления переносом данных?

                <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                <strong><%= Eval("FullName") %></strong><br />
                <p>
                <%= Eval("Summary") %>
                </p>
                </ItemTemplate>
                </asp:Repeater>

Получение ошибки Методы привязки данных, такие как Eval (), XPath () и Bind (), могут использоваться только в контексте элемента управления, связанного с данными. Я бы хотел просто написать FullName и Summary. Но я не хочу вкладывать субконтроли. Является ли Repsonse.Write лучшим способом?

UPDATE : Не уверен, что это необходимо, но единственный способ, которым я смог это решить, был с помощью элементов управления

Ответы [ 2 ]

3 голосов
/ 11 ноября 2009

Для репитера требуется источник данных, назначенный так:

public class Foo
{
public string FullName { get;set; } 
public string Summary {get;set; }

public Foo(fullName,summary)
{
  FullName=fullName;
  Summary=summary;
}
}

/// elsewhere...
List<Foo> myFoos = new List<Foo>();
myFoos.Add(new Foo("Alice","Some chick"));
myFoos.Add(new Foo("Bob","Some guy"));
myFoos.Add(new Foo("Charlie","Indeterminate"));
Repeater1.DataSource = myFoos;
Repeater1.DataBind();

Как показывает этот пример, вашим источником данных может быть все, что реализует IEnumerable - списки мои любимые, но большинство коллекций в C # попадают в эту категорию. Ваш источник данных не должен поступать из базы данных или где-либо еще.

Вам не нужно использовать response.write или субконтроль. (серверные элементы управления недопустимы внутри повторителя, в любом случае). Вы можете попробовать заменить

<%=Eval("...

с

<%#Eval("...

Я не уверен в разнице, но вторая форма используется в большинстве примеров.

0 голосов
/ 11 ноября 2009

Вы всегда можете попробовать следующее:

 <%# DataBinder.Eval(Container.DataItem, "FullName") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...