2010-06-18 2 views
0

Im использованием пользовательского NestedRepeater управления для ASP.NET, который можно найти on code projectПользовательские Repeater с hiractial Databinding

Источник находится в C#, который я преобразуется в VB и подключен к моему решению, до сих пор так хорошо. Проблема, им с будет привязки данных к ретранслятору, мой код позади выглядит так ...

'' get all pages 
    Dim navPages As DataSet = Navigation.getMenuStructure() 
    navPages.Relations.Add(navPages.Tables(0).Columns("ID"), navPages.Tables(0).Columns("ParentID")) 
    NestedRepeaterNavigation.RelationName = RelationName 
    NestedRepeaterNavigation.DataSource = navPages 
    NestedRepeaterNavigation.RowFilterTop = "ParentID is null" 
    NestedRepeaterNavigation.DataBind() 

Затем в шаблоне элемента моего пользовательского повторителя им пытаются следующее ...

<ItemTemplate> 
    <img src="/pix.gif" height="10" width="<%#(Container.Depth * 10)%>"> 
<%# (Container.DataItem as DataRow)["DESCRIPTION"]%> 
<%# (Container.NbChildren != 0 ? "<small><i>(" + Container.NbChildren.ToString() +")</i></small>" "") %><small><i></i></small> 
</ItemTemplate> 

Связывание данных падает; во-первых, «как DataRow» говорит, что он ожидал «)». А во-вторых, что ожидается идентификатор '! ='.

Это связано с переводом с C#, если привязка данных будет отличаться?

ответ

0

Хотя я не запрограммирован в VB.net в течение длительного (около 3 лет), но я знаю, что AS не применяется в VB.net вам нужно ctype бросить Container.DataItem как

CType(Container.DataItem, DataRow).

вы также можете попробовать DirectCast(Container.DataItem, DataRow), но я не думаю, что это сработает.

Также для сравнения неравенства можно использовать

Not Container.DataItem = 0

но не !=

+0

Спасибо за ваш ответ! Не могли бы вы показать мне, как я это бросил? – Dooie

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