2013-04-01 2 views
0

Может быть, мой вопрос прост или я новичок в этом, дело в том, что пытаюсь сделать приведенный ниже код в данные пункты связанного повторителя им собирающая ошибку Не удается привести объект типа * System.Data.Entity.DynamicProxies.AutoPublishLog_06BC2AA20C3D11E56D78DD544C2C7E5211D828344650C93B9AA23BDEE16A6DCE «напечатать„System.Data.DataRowView“». *Невозможно наложить объект типа 'System.Data.Entity.DynamicProxies на тип' System.Data.DataRowCollection '

Ошибка линия

Dim row As System.Data.DataRowView = DirectCast(e.Item.DataItem, System.Data.DataRowView) 

Любая помощь, заблаговременно

Фрагмент кода

Protected Sub AutoPublishList_ItemDataBound(ByVal sender As Object, ByVal e As 
System.Web.UI.WebControls.RepeaterItemEventArgs) Handles AutoPublishList.ItemDataBound 

    If e.Item.ItemType = ListItemType.AlternatingItem OrElse e.Item.ItemType = ListItemType.Item Then 
     Try 
      Dim row As System.Data.DataRowView = DirectCast(e.Item.DataItem, System.Data.DataRowView) 

      Dim pageID As Literal = DirectCast(e.Item.FindControl("PageID"), Literal) 

      If Convert.ToInt32(row("PageID")) = Business.Objects.Constants.A Then 
      pageID.Text = "Dummy A" 
       End If 
      If Convert.ToInt32(row("PageID")) = Business.Objects.Constants.B Then 
      pageID.Text = "Dummy B" 
       End If 

     Catch ex As Exception 
      AddErrInfo(ex) 
      ErrHandler(ex) 
     End Try 
    End If 

End Sub 
+0

Что вы хотите достичь, и, действительно, в чем вопрос? – flq

+1

@ fly-я получаю этот eror во время загрузки страницы. Невозможно наложить объект типа «System.Data.Entity.DynamicProxies на тип« System.Data.DataRowCollection ». Мне нужно получить строку (« PageID ») для этого i объявить therow как System.Data.DataRowView, но которые вызывают ошибку – Sreejith

ответ

1

Вы смешиваете классические объекты ADO.NET и Entity Framework. Это два разных мира и не являются автоматически взаимоисключаемыми.

Объект EF - это строго типизированный объект, я предлагаю вам вместо этого использовать e.Item.DataItem для вашего типа EF. Из вашего сообщения об исключении я подозреваю, что тип EF называется AutoPublishLog.

Попробуйте бросить его вместо этого:

Dim row AS AutoPublishLog = DirectCast(e.Item.DataItem, AutoPublishLog) 

'your code 

If row.PageID = Business.Objects.Constants.A then 
'your code 

Это должно работать (возможно, вам необходимо некоторое пространство имен или другое имя для AutoPublishLog, но это трудно сказать, не зная вашей модели).

+0

ya, это работает как шарм – Sreejith

0

Я не знаю, как VB.Net, но я думаю, что ваш e.Item.DataItem не конвертируется в тип вы хотите ... в чем я сомневаюсь. Попробуйте просмотреть типы.

+0

@ richardo- не удалось – Sreejith

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