0
看起来好像有几个问题已经发布,但没有一个能够解决我的问题。我有一个中继器内的用户控件。用户控件只有一个公共属性,只有一个getter/setter。数据绑定在初始页面加载时发生得很好,但是当从下拉菜单中选择过滤器时,第一个中继器绑定没问题,但包含用户控件的第二个中继器对于该属性显示为空。因此,在实际代码:中继器中的ASP.NET用户控件属性在回发后为空
我的两个中继器看起来像这样:
<asp:Repeater ID="rptTransactionVisual" runat="server" OnItemDataBound="rptTransactionVisual_ItemDataBound">
<ItemTemplate>
<%#Eval("TransactionAmount")%>
^- 我有这个在完整性检查 - 它总是得到一个值,即使在低于交易接收空值,所以我知道它得到一个数据源和数据绑定被 “RUNAT =”服务器” />
<asp:Repeater ID="rptTransactions" runat="server" OnItemDataBound="rptTransactions_ItemDataBound" OnDataBinding="rptTransactions_DataBinding">
<ItemTemplate>
<tr>
<td><%#DataBinder.Eval(Container.DataItem, "TransactionDate", "{0:MM/dd/yyyy}")%></td>
<td><asp:Literal ID="ltlTransactionAmount" runat="server" /></td>
<td><asp:Literal ID="ltlClient" runat="server" /></td>
<td><asp:Literal ID="ltlTransactionType" runat="server" /></td>
<td><asp:Literal ID="ltlSector" runat="server" /></td>
</tr>
</ItemTemplate>
</asp:Repeater>
我绑定的t值运算中继到第二中继器的数据源,因为它们是相同的:
protected void rptTransactions_DataBinding(object sender, EventArgs e)
{
rptTransactionVisual.DataSource = rptTransactions.DataSource;
rptTransactionVisual.DataBind();
}
这里是从用户控制,最初工作正常相关的代码,但是在滤波之后,事务始终为空;
public Transaction transaction { get; set; }
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (transaction == null) return;
....
下面是过滤代码:我打我的头靠在墙上这个
protected void ddTransactionType_SelectedIndexChanged(object sender, EventArgs e)
{
var transactions = getChildPages().Where(p => p.TransactionType == ddTransactionType.SelectedValue).ToList<TransactionPage>();
}
rptTransactions.DataSource = transactions;
rptTransactions.DataBind();
//databinding happens always for the list repeater, and I do see the visual repeater being databound with the correct datasource
}
。
谢谢,这是正确的答案。您必须动态加载控件。 – 2016-05-17 14:40:20