我有一个Repeater
和一个Button
控制。在Repeater
我有一个HiddenField
控制:
<asp:Repeater runat="server" ID="rptItems">
<ItemTemplate>
<asp:HiddenField runat="server" ID="hfReportId"></asp:HiddenField>
</ItemTemplate>
</asp:Repeater>
<asp:Button runat="server" ID="btnSave" Text="Save" />
在后面的代码中,我将ItemDataBound
事件处理程序绑定Repeater
到Page_Load:
this.rptItems.ItemDataBound += new RepeaterItemEventHandler(rptItems_ItemDataBound);
在事件处理程序中,我以HiddenField
编程方式设置控件的值:
protected void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
var hfReportId = (HiddenField)e.Item.Controls[0].FindControl("hfReportId");
hfReportId.Value = "TestValue";
}
}
到目前为止,这按预期工作,并且值HiddenField
设置为“TestValue”。
回发时出现问题。如果我单击“保存”按钮,ItemDataBound
事件处理程序将再次触发,并再次HiddenField
设置 的值,但保留原始值并最终得到“TestValue,TestValue”值。我已经将标签控件换成HiddenField
了标签控件,并且这种行为没有发生。
我已经单步执行了代码,当ItemDataBound
事件处理程序在回发时触发时,HiddenField
.
任何帮助表示赞赏。