Вложенные даталисты в ASP.net - PullRequest
2 голосов
/ 04 марта 2009

Я использую вложенные списки данных для отображения иерархических данных. Во вложенном списке данных я хочу иметь возможность связать свойство, принадлежащее объекту, с которым связан родительский список данных.

Кто-нибудь знает, как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 25 августа 2009

Я не знаю, как это сделать, но если вы подключитесь к OnItemDataBound, вы можете использовать следующий код:

Protected Sub YourList_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs) Handles YourList.ItemDataBound

  If e.Item.ItemType = ListItemType.Item Or _
    e.Item.ItemType = ListItemType.AlternatingItem Then

    CType(e.Item.FindControl("LabelName"), Label).Text = _
       DataBinder.Eval(CType(sender.Parent, DataListItem).DataItem, "FieldName"))

  End If

End Sub

или в C # (не проверено)

Protected Void YourList_ItemDataBound(Object sender, DataListItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
  {
    ((Label)e.Item.FindControl("LabelName")).Text = 
       DataBinder.Eval(((DataListItem)sender.Parent).DataItem, "FieldName");

  }
}
1 голос
/ 04 марта 2009

Я не знаю чистый способ архивировать это.

Взломать, что вы можете (не) хотите попробовать:

<%# 
     (DataBinder.GetDataItem(Container.BindingContainer...BindingContainer) as AType)
     .PropertyOfParentsDataListDataItem 
 %>

или

<%# 
     Eval(
        DataBinder.GetDataItem(Container.BindingContainer...BindingContainer)
        ,"PropertyOfParentsDataListDataItem"
     )
 %>
...