2014-01-16 4 views
2

Ниже приведен фрагмент кода, который получает одну запись из базы данных и связывается с источником данных ретранслятора. Но когда страница визуализации он выдает сообщение об ошибкеКак связать один объект LINQ с ASP.NET Repeater Control

protected void Page_Load(object sender, EventArgs e) 
     { 

      var movie= context.movies.GetMovie(); 

      if (!IsPostBack) 
      { 
       Repeater1.DataSource = movie.; 
       Repeater1.DataBind(); 
      } 

     } 

Сообщение об ошибке:

An invalid data source is being used for Repeater1. A valid data source must implement either IListSource or IEnumerable. 

Любое предложение?

ответ

2

Вы могли бы сделать это массив:

Repeater1.DataSource = new[]{ movie }; 

Но если вы всегда показывают только одну запись, я бы использовать FormView или DetailsView вместо этого.

Посмотрите: http://msdn.microsoft.com/en-us/library/ms227992(v=vs.90).aspx

3

Вы могли взломать это делать, как Repeater1.DataSource = new List<Movie>() { movie };

+0

Большое спасибо. Это работа. Причина использования повторителя для a, потому что я хочу иметь пользовательскую разметку html на странице. Я обнаружил, что другие элементы управления данными создают таблицы при их рендеринге. Я хочу, чтобы в исходном представлении отображалась настраиваемая разметка. У вас есть лучшее предложение? – user2866746

+0

@ user2866746: как указано в [моем ответе] (http://stackoverflow.com/a/21158893/284240), вы можете использовать 'FormView' или' DetailsView'. Разница в том, что 'DetailsView' создает (нежелательный) табличный макет, тогда как' FormView' дает вам полный контроль. Вы создаете шаблон, содержащий элементы управления для отображения отдельных полей из записи, аналогичной репитеру. –

+0

Я бы, вероятно, использовал FormView или DetailsView, как это предложил @TimSchmelter, или внедрил пользовательский вид для просмотра деталей. – scheien

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