2009-04-02 6 views
3

Я борюсь с синтаксисом привязки данных здесь. Например, у меня есть структура данных, как это -Как вы вручную привязываете сложный объект к шаблонизированному управлению как строку в gridview?

public class Course{ 

public string CourseName {get;set;} 

public string CourseCode {get;set;} 

public List<Instructor> InstructorsTeaching{get;set;} 

} 

public class Instructor{ 

public string InstructorName{get;set;} 

public string InstructorCode{get;set;} 

} 

Теперь, если я хочу, чтобы связать этот список курсов сказать GridView вручную, я мог бы сделать

<asp:TextBox runat="server" ID="tbCourseName" Text='<%# Bind("CourseName")%>'/> 

при задании для редактирования шаблона сетки но как я связать инструктор уча свойство сказать ListBox в той же строке, я не могу понять, синтаксис, вот exaple того, что я пытался и не

<asp:ListBox runat="server" ID="tbInstructors" 
    DataSource='<%# Eval("InstructorsTeaching") as List<Instructor> %>'> 
    <asp:ListItem Text='<%# Bind("InstructorCode")%>' 
       Value='<%# Bind("InstructorName")%>'/>... 
<as:ListBox/> 

Мой выше код делает не работает наверняка :). В идеале я хотел бы сделать это в разметке вместо кода.

+0

добавлен тег «C#», поэтому Jon Skeet отвечает на него за вас :) –

ответ

1

Я не думаю, что вы можете установить источник данных так, попробуйте установить его на GridView's RowDataBound event

+0

Я не знаю о синтаксисе. Будет здорово, если я смогу сделать это через разметку. Я думаю, что это может быть сделано. Может быть, я ошибаюсь. – Perpetualcoder

3

Вы ударили по одной из основных причин, что ASP.NET 2-полосная привязки отстой: Вы действительно не можете сделать вложенная двухсторонняя привязка данных.

С одной стороны, хотя вы можете сделать это с Eval, ASP.NET не допускает синтаксиса вложенного графа с выражением Bind (т. Е. <% # Bind ("Customer.FirstName")%>).

Кроме того, для вложенных элементов управления списком, таких как ваш сценарий, для каждого списка потребуется дополнительный элемент управления DataSource. Вы устанавливаете DataSource в свой ListBox, который будет работать для выражений Eval, но для привязки выражений к работе вы должны использовать DataSourceID для предоставления идентификатора элемента управления DataSource, который обеспечивает внутренний набор результатов. И даже тогда ваши результаты будут kludgy, поскольку вы можете обновлять только один источник данных за раз.

2-сторонняя привязка данных, вероятно, была написана с использованием SqlDataSource, а не ObjectDataSource. Если у вас многоуровневый графический объект, вам будет больно использовать двухстороннюю привязку данных.

+0

Я просто решил изменить свой сервис api, чтобы вернуть XML и сделать это jquery способом. Механизмы Ohter были слишком медленными для больших наборов данных. Спасибо за вход – Perpetualcoder

 Смежные вопросы

  • Нет связанных вопросов^_^