是否有可能的值传递到中继器的SelectMethod?(Is it possible to pass

2019-08-01 07:17发布

ASP.Net 4.5引入将数据绑定到像通过SelectMethod属性的Repeater控制的新方法:

<asp:Repeater runat="server" ItemType="MyData.Reference" 
      SelectMethod="GetReferences">

调用代码隐藏方法

public IEnumerable<Reference> GetReferences()

在嵌套中继器的情况下,是有可能的参数传递给该select方法以某种方式,使得它根据外中继器的物品取出不同的数据?

例:

<asp:Repeater runat="server" ItemType="MyData.Reference" 
        SelectMethod="GetReferences(Item.ID)">

应该调用

public IEnumerable<Reference> GetReferences(int id)

我知道这是可以通过的ItemDataBound事件来实现,但我想用SelectMethod范围和项目类型的更简单,更清晰的语法。

是否SelectMethod允许参数传递不知何故?

如果没有,是否有另一种干净的方式我SelectMethod内得到外直放站项目的价值?

Answer 1:

在等待答案,我打了一下周围,发现以下解决方案。

它可能不是这样做的最佳方式,但到目前为止,我发现它没有问题,这是非常straigtforward,所以我就扔在那里。

<asp:Repeater runat="server" ItemType="MyData.Reference" 
     DataSource='<%# GetReferences(Item.ID) %>'>

基本上我在这里做的是更换SelectMethodDataSource (智能感知不会建议,但它仍然工作)。

这样我可以通过一个值GetReferences方法,然后用来模型绑定的返回值。

到目前为止,这是我遇到的最短的解决方案。



Answer 2:

这里是你如何做到这一点:

在你的外中继,放置一个隐藏字段,并将其命名为内部中继器的selectmethod:

<asp:Repeater SelectMethod="GetTopLevelStuff">
   <ItemTemplate>       
       <asp:HiddenField runat="server" ID="ItemId" Value="<%# Item.ID %>"/>
       <asp:Repeater SelectMethod="GetSubItems">
           <ItemTemplate>Template code for sub-items here</ItemTemplate
       </asp:Repeater>
   </ItemTemplate
</asp:Repeater>

那么,这里的不那么充分证明魔法:

 public IQueryable<SubItem> GetSubItems([Control("ItemId")] int itemId)
    {
        return yourDataStore.GetSubItems(itemId);
    } 

使用列表框时得到“的SelectedValue”在这种情况下valueprovider也可以乘坐PROPERTYNAME,有用的。

我发现你的问题,确实像你一样,那么我想这个解决方案,而不是它的作品一样好,但更清洁,更根据概念的想法,它似乎。



Answer 3:

在看看练习1:模型的ASP.NET Web窗体绑定- >任务3 -在模型绑定值提供的教程。

它可以将SelectMethod签名中定义了某种控制选择参数。



Answer 4:

您可以使用值提供

例:

public IQueryable<Category> GetCategories([Control]int? minProductsCount)
{
}

这是一个ValueProviders的列表:

  • CompositeValueProvider 。 代表值提供的值来自实现价值提供者的列表IEnumerable接口。

  • QueryStringValueProvider表示该包含在查询字符串值提供NameValueCollection对象。

  • RouteDataValueProvider表示一个包含在一个实现一个对象路径数据的值提供者IDictionary(Of TKey, TValue)接口。

  • ControlValueProvider表示用于控制值的新价值。

  • CookieValueProvider表示cookie值的新价值。

  • FormValueProvider表示表单值的新价值。

  • ProfileValueProvider表示用于配置文件值的值供应商。

  • UserProfileValueProvider表示为用户配置文件的值供应商。

  • ViewStateValueProvider表示用于视图状态值的值提供者。



文章来源: Is it possible to pass a value to the SelectMethod of a Repeater?