问题描述
我现在有一个<asp:Repeater控件,我在里面加入了RadioButtonList控件,具体的代码如下:<asp:Repeaterrunat="server"ID="studentList"DataMember="ct_id"><ItemTemplate><asp:RadioButtonListID="SShow"DataMember="ct_id"runat="server"RepeatDirection="Horizontal"AutoPostBack=trueOnSelectedIndexChanged="MainBorad_ItemDataBound"><asp:ListItemValue=0>出席</asp:ListItem><asp:ListItemValue=1>缺席</asp:ListItem></asp:RadioButtonList></ItemTemplate></asp:Repeater>现在的问题是,当我在页面上选择RadioButtonList的时候,我该如何触发事件?如果我触发SShow_SelectedIndexChanged事件的话,那么我该如何在该事件中获取我操作的这个RadioButtonList所在的行的id;我不需要循环;能否有方法读取到,请各位高人指点!
解决方案
解决方案二:
RadioButtonListr=(senderasRadioButtonList);Controlctl=r.Parent;/*while(ctl!=null&&!(ctlisRepeaterItem))ctl=ctl.Parent;*/if(null!=ctl){intidx=((RepeaterItem)ctl).ItemIndex;//...}
解决方案三:
设置radiobuttonlist的commandNameRepeater的ItemCommand事件通过e.CommandName判断然后转换类型,取id
解决方案四:
触发事件((RadioButtonList)studentList.Items[0].FindControl("SShow")).SelectedIndexChanged+=newEventHandler(SShow_SelectedIndexChanged);privatevoidSShow_SelectedIndexChanged(objectsender,EventArgse){}取ID((RadioButtonList)studentList.Items[0].FindControl("SShow)).ID
解决方案五:
楼上正解
解决方案六:
FindControl效率比较低,用事件更好。学习了。