C#学习教程:Asp:复选框未选中时不会触发复选框的OnCheckedChanged事件处理程序该复选框将AutoPostBack属性设置为true。检查任何复选框时,将触发事件处理程序。如果未选择任何内容,则不会触发事件处理程序。知道为什么事件没有触发,以及我如何触发它?谢谢。简化的转发器代码:集合绑定到转发器如下:rptLinkedItems.DataSource=GetLinkableItems();rptLinkedItems.ItemDataBound+=newRepeaterItemEventHandler(rptLinkedItems_ItemDataBound);rptLinkedItems.DataBind();}base.OnPreRenderComplete(e);}OnItemDataBound事件处理程序如下:.DataItem作为CategoryItem;LiterallitItemName=args.Item.FindControl("litItemName")asLiteral;CheckBoxchkLinked=argind.Find.Item.(“chkLinked”)作为复选框;litItemName.Text=item.Text;chkLinked.Checked=IsItemLinked(项目);chkLinked.AutoPostBack=true;chkLinked.InputAttributes.Add("值",item.Id.ToString());}}OnCheckedChanged事件处理程序如下:protectedvoidchkLinked_CheckedChanged(Objectsender,EventArgsargs){CheckBoxlinkedItem=senderasCheckBox;}BooleanitemState=linkedItem.Checked;Int32itemId=Int32.Parse(linkedItem.InputAttributes["Value"].ToString());DataAccessLayer.Update(m_linkingItem,Utilities.GetCategoryItemFromId(itemId),itemState);PS如果有人也能告诉我为什么降价对我不起作用......这是因为当ASP.NET执行ASP.NET页面生命周期的控制事件部分时,控件层次结构(特别是复选框)不'存在,因为您稍后会在PreRender阶段创建它们。有关事件序列的更详细概述,请参阅ASP.NET页面生命周期概述。我会警惕@bleeeah的建议,因为您正在检查rptLinkedItems_ItemDataBound中的CheckBox.CheckedrptLinkedItems_ItemDataBound,这也会导致事件处理程序执行:chkLinked.Checked=IsItemLinked(item);相反,移动:if(!Page.IsPostBack){m_linkedItems=GetLinkedItems();rptLinkedItems.DataSource=GetLinkableItems();rptLinkedItems.ItemDataBound+=newRepeaterItemEventHandler(rptLinkedItems_ItemDataBound);rptLinkedItems.DataBind();}输入Page.Load事件处理程序。尝试像这样使用AutoPostBack="true":尝试重新订阅OnItemDataBound事件中的CheckChanged事件,chkLinked.CheckedChanged+=newEventHandler(chkLinked_CheckedChanged);像这样使用AutoPostBack="true":在Page_Init中订阅CheckChanged事件。您必须在转发器项目命令中为清单定义事件处理程序,然后在转发器项目命令、清单项目和获取检查项目中定义事件处理程序。在.aspx页面中,您可以使用Ajax和updatepanel来触发事件处理程序,但请记住,您必须在转发器之外定义脚本管理。//checkliskcheckedchangeeventhandlerprotectedvoidchkLinked_CheckedChanged(Objectsender,EventArgsargs){}anditemforwardercommanditem://遍历检查列表项并检测已检查复选框的OnCheckedChanged事件处理程序不会触发所有共享内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——);cbl.SelectedIndexChanged+=newEventHandler(chkLinked_CheckedChanged);字符串名称="";for(inti=0;i本文摘自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
