自定义中继器,带有高级数据绑定

时间:2010-06-18 09:55:50

标签: asp.net data-binding custom-controls

我正在使用ASP.NET的自定义NestedRepeater控件,可以找到on code project

源代码在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#的转换,数据绑定是否应该不同?

1 个答案:

答案 0 :(得分:0)

虽然我没有在VB.net中编程很长时间(大约3年),但我知道AS不适用于VB.net,您需要ctype来投射Container.DataItem喜欢

CType(Container.DataItem, DataRow)

您也可以尝试DirectCast(Container.DataItem, DataRow),但我认为这不会起作用。

同样,对于不平等比较,您可以使用

Not Container.DataItem = 0

但不是!=