ASP.NET HiddenField在PostBack后在Repeater中的值重复

7 浏览
0 Comments

ASP.NET HiddenField在PostBack后在Repeater中的值重复

我有一个Repeater和一个Button控件。在Repeater中,我有一个HiddenField控件:

在代码后台,我将ItemDataBound事件处理程序绑定到RepeaterPage_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没有值。

非常感谢任何帮助。

0
0 Comments

在ASP.NET中,当在Repeater控件中使用HiddenField时,可能会出现HiddenField的值在PostBack后重复的问题。这个问题的出现原因是在Repeater的ItemDataBound事件中没有正确绑定HiddenField的值。

要解决这个问题,首先需要在aspx页面中绑定Repeater的ItemDataBound事件,代码如下:

OnItemDataBound="repeater_ItemDataBound"

然后在页面加载时,使用IsPostBack属性来判断是否为PostBack请求,只有在第一次加载页面时才绑定Repeater,代码如下:

if(!IsPostBack)
{
   //Bind repeater
}

接下来,在ItemDataBound事件中,使用FindControl方法来找到HiddenField控件,并赋值给变量hfReportId,代码如下:

var hfReportId = (HiddenField)e.Item.FindControl("hfReportId");

需要注意的是,不要使用e.Item.Controls[0].FindControl方法来查找HiddenField,因为这可能会导致找到错误的控件。

通过以上步骤,可以解决HiddenField在Repeater中重复值的问题。希望这篇文章对你的编码工作有所帮助!

0
0 Comments

在使用asp:Repeater时,我遇到了与asp:HiddenField重复值的问题。

问题是:

在PostBack时,我的asp:Repeater中的值在PageLoad()方法中通过DataBind()刷新,而不是在ButtonSearch_click()事件方法中刷新。

这就是为什么我仍然在asp:Repeater的asp:HiddenField中获取到旧值的原因。

解决方法:

将DataBind()方法从PageLoad()方法中移动到ButtonSearch_click()事件方法中,以确保在PostBack时刷新asp:Repeater的数据绑定。这样,asp:HiddenField的值将更新为最新的值。

以下是修改后的代码示例:

protected void ButtonSearch_click(object sender, EventArgs e)

{

// 在ButtonSearch_click事件方法中更新asp:Repeater的数据绑定

Repeater1.DataSource = // 数据源;

Repeater1.DataBind();

}

通过将数据绑定操作放在正确的事件方法中,可以解决asp:HiddenField在PostBack后重复值的问题。

0