当前位置: 首页 > 编程语言 > C#

维护转发器的视图状态分享

时间:2023-04-11 03:00:07 C#

维护转发器的视图状态我对转发器的视图状态有一个问题,就是转发器内部的控件不维护它们的视图状态。我有以下内容:Repeater1:单击链接按钮时,CommandArgument的值存储在页面中间。回发后,在加载预呈现事件处理程序之前,我无法获取隐藏字段的值。因此,在我的预渲染事件中,我获取了隐藏字段的值并将其存储在List属性中,如下所示:);}List属性如下所示:publicListImageList{get{if(this.ViewState["ImageList"]==null){this.ViewState["ImageList"]=newList();}return(List)(this.ViewState["ImageList"]);}set{this.ViewState["ImageString"]=value;将值存储到我的List属性后,我将绑定第二个Thefirstrepeater(同样在prerender事件中):this.rptSelectedImages.DataSource=this.LightBoxControl.ImageList;this.rptSelectedImages.DataBind();第二个转发器有一个下拉菜单和一个文本框。问题是这些子控件的视图状态没有得到维护。我认为这是因为每次回发我都会重新绑定转发器,所以它会被重建。我不知道的是我怎么可能绕过这个?ImageList属性只在回发时更新,所以我显然必须在每次回发时重新绑定转发器——这怎么办?任何帮助将不胜感激。谢谢Al如果你想重新绑定转发器,你需要在加载ViewState之前在Init上进行。您还应该检查IsPostback标志,并且仅在页面未回发时才绑定转发器。为了澄清如果您的第二个转发器绑定在PreRender,则ViewState不能用于持久化控件,因为它们在加载ViewState时不存在——在Init之后和PreLoad之前。您需要在每次回发时保持绑定,或者在Session上存储或列出,以便您可以访问列表以在Init(或更改)时绑定一次。我看不到将CommandArgument属性复制到隐藏字段的意义。您应该做的是在Repeater上使用ItemCommand事件并使用事件冒泡。你可以这样处理LinkBut??ton的Click事件:以上是《C#学习教程:维护中继器的视图状态》的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注—repeater.ItemCommand+=(sender,eventArgs)=>{varcommandArgument=eventArgs.CommandArguments;ImageList.Add(命令参数);rptSelectedImages.DataSource=ImageList;rptSelectedImages.DataBind();侵权请点击右侧联系管理员删除。如需转载请注明出处: