在我这样做之前,我想我会问这是不是最好的方法。每个“Vendor”对象都有一个“Bucket”对象。在我的转发器中,我需要显示Vendor中的一些属性和Bucket中的一些属性,还有一些由FileSystem填充的链接到供应商的图像。我认为最好的方法是将转发器与供应商对象绑定,然后在ItemDataBound上,我将根据绑定到特定Items [e.Item.ItemIndex]的供应商填充图像和存储桶。
这是最好的方法吗?
答案 0 :(得分:2)
这就是我通常如何去做,绑定主对象并处理ItemDataBound中的细节。
答案 1 :(得分:2)
如果Vendor对象只能容纳一个Bucket对象,则可以将它全部绑定在一个顶级转发器中。您可以通过顶级的简单数据绑定访问Bucket,而无需覆盖ItemDataBound。
因为您最有可能绑定“供应商”,所以如果您想这样做,您可以访问数据绑定中的成员:
<%# DataBinder.Eval (Container.DataItem, "Bucket.Property" ) %>
如果您必须在绑定的每次迭代期间“处理某些内容”并且需要对每个供应商对象进行详细访问以进行决策,那么您希望执行ItemDataBound。
如果Vendor对象可以容纳多个Buckets,那么访问它的最佳方式是通过ItemDataBound。在供应商的每次迭代中,您可以绑定一个新的嵌套转发器以显示存储桶数据,或执行您可能需要的任何重复/聚合功能。
根据您希望它在客户端的行为方式,您可以仅渲染供应商。当用户点击Vendor(或其他)时,您可以对服务器执行AJAX调用,该服务器将检索Bucket数据并动态地将其呈现到您的页面中。如果有大量供应商和他们的桶被渲染,您可能想尝试这种方法。与在ASPX服务器端构建所有内容相比,这将有助于数据库性能和页面呈现时间。 (但这需要大量数据,在尝试获得性能提升之前,应该出于可用性/客户端原因这样做。)