Repeater控件中的Linkbutton单击事件问题

问题描述

repeater控件中:<asp:LinkButtonID="addLnk"runat="server"CommandName="ADD"CommandArgument='<%#Eval("ID")%>'>加入试卷</asp:LinkButton><asp:LinkButtonID="delLnk"runat="server"CommandName="DEL"CommandArgument='<%#Eval("ID")%>'>移出试卷</asp:LinkButton>

Repeater事件protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse){//绑定数据到Repeater}protectedvoidRepeater1_ItemCommand(objectsender,RepeaterCommandEventArgse){//根据Linkbutton的Commandname的值来确定下面的操作:将Commandargument保存给session,并将设置相应Linkbutton的visible的隐藏或显示}

问题是,每次单击linkbutton时,页面的图片要重新加载一次,像刷新了一下似的

解决方案

解决方案二:
如果只是隐藏可以直接写JS
解决方案三:
单击的时候有个传值,后台存储
解决方案四:
这个事件ItemDataBound,第一次PostBack之后,均要执行。如果是ItemCreated的话,它只会执行一次。你可以尝试debug一下,它看看它是怎样跑的?morerefer:
解决方案五:
用AJAX吧。控件一般都会有回发的。最不济用个ajax控件
解决方案六:
我把代码贴出来,大家看看:.aspx:<asp:UpdatePanelID="UpdatePanel1"runat="server"><ContentTemplate><asp:RepeaterID="Repeater1"runat="server"OnItemDataBound="Repeater1_ItemDataBound"OnItemCommand="Repeater1_ItemCommand"><ItemTemplate><divclass="divSTBody"><divclass="divSTInfo"><table><tr><td>题型:<%#Eval("stTable")%></td><td>难度:<%#Eval("STLevel")%></td><td>知识模块:<%#Eval("RelateKnowledge")%></td><td>上传时间:<%#Eval("UploadTime")%></td></tr></table></div><divclass="divQuestion"id="question<%#Eval("id")%>"onclick="showOrhideDiv('answer<%#Eval("ID")%>')"><divid="STContentDiv"runat="server"></div></div><divclass="divAnswer"id="answer<%#Eval("ID")%>"style="display:none"><divid="STAnswerDiv"runat="server"><%#Eval("Answer")%></div></div><divid="addORdel_LnkBtn"class="divZJadd"><asp:LinkButtonID="addLnk"runat="server"CommandName="ADD"CommandArgument='<%#Eval("ID")%>'>加入试卷</asp:LinkButton><asp:LinkButtonID="delLnk"runat="server"CommandName="DEL"CommandArgument='<%#Eval("ID")%>'>移出试卷</asp:LinkButton></div></div></ItemTemplate></asp:Repeater></ContentTemplate></asp:UpdatePanel>

.cs:protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse){DataRowViewdrv=(DataRowView)e.Item.DataItem;LinkButtonaddLnk=e.Item.FindControl("addLnk")asLinkButton;LinkButtondelLnk=e.Item.FindControl("delLnk")asLinkButton;List<string>stIDArray;objectarrayVar=Session["stIDArray"];if(arrayVar==null||(arrayVarasList<string>)==null){stIDArray=newList<string>();}else{stIDArray=arrayVarasList<string>;}if(stIDArray.Contains(Convert.ToString(drv["ID"]))){addLnk.Visible=false;delLnk.Visible=true;}else{addLnk.Visible=true;delLnk.Visible=false;}//解析试题内容中的图片并设置src//HtmlGenericControldivTemp=e.Item.FindControl("STContentDiv")asHtmlGenericControl;divTemp.InnerHtml=htmlstr;}protectedvoidRepeater1_ItemCommand(objectsender,RepeaterCommandEventArgse){LinkButtonaddLnk=e.Item.FindControl("addLnk")asLinkButton;LinkButtondelLnk=e.Item.FindControl("delLnk")asLinkButton;List<string>stIDArray;objectarrayVar=Session["stIDArray"];if(arrayVar==null||(arrayVarasList<string>)==null){stIDArray=newList<string>();}else{stIDArray=arrayVarasList<string>;}if(e.CommandName=="ADD"){stringaddStr=Convert.ToString(e.CommandArgument);if(!stIDArray.Contains(addStr)){stIDArray.Add(addStr);addLnk.Visible=false;delLnk.Visible=true;}}else{if(e.CommandName=="DEL"){stringdelID=Convert.ToString(e.CommandArgument);if(stIDArray.Contains(delID)){stIDArray.Remove(delID);delLnk.Visible=false;addLnk.Visible=true;}}}Session["stIDArray"]=stIDArray;}

解决方案七:
Repeater中的Linkbutton每单击一次,就postback一次
解决方案八:
引用3楼insus的回复:

这个事件ItemDataBound,第一次PostBack之后,均要执行。如果是ItemCreated的话,它只会执行一次。你可以尝试debug一下,它看看它是怎样跑的?morerefer:

Repeater中的Linkbutton每单击一次,就postback一次,所以就再执行ItemDataBound一次,相当于重新加载一次了。你说的ItemCreated该怎么用
解决方案九:
用ajax来实现吧

时间: 2025-01-02 12:37:33

Repeater控件中的Linkbutton单击事件问题的相关文章

自定义view-自定义View控件中怎么实现双击事件和单击事件

问题描述 自定义View控件中怎么实现双击事件和单击事件 最近写了一个自定义View控件,想要实现单击事件和双击事件,单击事件到时很容易实现,但是双击事件却不知道怎么实现,求助一下在自定义View控件下怎么实现双击事件. 解决方案 android中只有单击和其他事件,其实都是由OnTouch事件演变而来 public class MainActivity extends Activity implements OnTouchListener { private long firstClick;

在Repeater控件中创建可隐藏区域

创建|控件 在WEB应用中,如何才能使应用高效率呢?如何才能吸引用户呢?这的确是个大学问,页面的内容,色搭配等都十分重要.但不可忽视的是,多数情况下,对于数据的呈现方式也是十分重要的.由于web应用的规模不断增大,数据也越来越多了,有时候,由于在一个页面同时显示的数据太多,从而造成页面的不美观,用户因此也会感到厌倦和操作困难.因此,本文将介绍利用repeater控件的隐藏区域,以达到较好的数据显示效果. 防止数据过多加载有很多方法,比如采用数据分页的方法,又或者采用master/detail的方

JS实现在Repeater控件中创建可隐藏区域的代码_javascript技巧

由于web应用的规模不断增大,数据也越来越多了,有时候,由于在一个页面同时显示的数据太多,从而造成页面的不美观,用户因此也会感到厌倦和操作困难.因此,本文将介绍利用repeater控件的隐藏区域,以达到较好的数据显示效果.   防止数据过多加载有很多方法,比如采用数据分页的方法,又或者采用master/detail的方式,就是先显示每条数据的主要内容,而对于详细数据,用户只需要点detail的链接就可以了.本文将介绍另外一种方式来显示数据,它采用折叠的隐藏方式,当用户需要看每条记录的详细描述时,

repeater控件中包含radiobuttonlist控件,如何使radiobuttonlist绑定数据

问题描述 repeater控件中包含radiobuttonlist控件,radiobuttonlist控件中包含多个itemlist如何使radiobuttonlist绑定数据,然后是每个itemlist显示数据库中的相应字段望指教,谢谢 解决方案 解决方案二:itembind(sender,e)解决方案三:引用1楼buaabyy的回复: itembind(sender,e) 请具体点,可以吗谢谢了解决方案四:在repeater的ItemDataBound事件中写相应的代码

Repeater控件中利用RadioButtonList绑定数据库多个字段

问题描述 请教各位高手,我想利用Repeater控件中添加RadioButtonList控件来实现考试系统中的单项选择题的功能,之前好像这个论坛有一篇类似的帖子,但是我试过了,不能用,不知道那个发帖的兄台居然说可以用,有点奇怪,我已经将Repeater控件做了数据绑定,代码是:privatevoidBindData(){SqlConnectioncon=DB.CreateConnection();con.Open();SqlCommandcmd=newSqlCommand("select*fro

关于Repeater控件中,得到DropDownList的值等一系列问题[专为此问题注册帐号,散分]

问题描述 各位老鸟,您好,小弟在使用Repeater控件中遇到了一些麻烦,请各位老鸟解答这里可以看到,其中的菜品名称和菜品价格都是通过Label控件绑定显示出来的,后面加了一个点菜份数,是用的DropDownList,我选择好了需要的菜品后,点提交按钮后,只能提交最后一个值"鳝鱼",而且需要的份数也显示不出来,我把该提交按钮的代码发上来,用的是Foreach遍历整个Repeater,但是好像这样不是我需要的.我需要实现的是:1.得到Repeater控件中的DropDownList的值,

在Repeater控件中使用if语句

控件|语句 我最近正在写一个 BBS 的项目,在显示主题列表时,我遇到了一个问题. BBS_Topic 的数据表结构定义大致是下面这样: TABLE BBS_Topic( TopicID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, Title NVARCHAR(40), Author NVARCHAR(20), PostDate DATETIME NOT NULL DEFAULT GETDATE(), Content NTEXT, Clicked INT N

Repeater控件里的LinkButton做弹窗界面?

问题描述 <tdclass="gvRow"align="center"style="width:10%;"><asp:LinkButtonID="lbtEditer"runat="server"Style="color:#0467b3"CommandName="Editer"CommandArgument='<%#Eval("Good

如何在同页面中的Repeater控件中获取DropDown已经选定的值

问题描述 DropDownList是二级联动的省市,Repeater显示的是详细信息,如何在DropDownList选定后从repeater显示出来,请教,多谢!! 解决方案 解决方案二:DropDownList在Repeater外面?上放置Label,记下ID,然后查找该Label,将结果显示出来解决方案三:是在外面,用lable记录DropDownList的选定值吗?但是我二级联动是读的后台的代码