ASP.NET C#代码RepeaterItem转Repeater类型转换错误求助
解决RepeaterItem转Repeater的类型转换错误
这个错误的原因很明确:你试图把控件的NamingContainer强制转换成Repeater类型,但实际上,位于Repeater的ItemTemplate内的控件,它的NamingContainer对应的是当前的Repeater项(RepeaterItem),而不是整个Repeater控件本身。
修正步骤
只需要修改后台代码里的类型转换语句即可:
原来的错误代码:
Repeater Item = (Repeater)btnCerFormsMon_Print.NamingContainer;
替换为:
RepeaterItem Item = (RepeaterItem)btnCerFormsMon_Print.NamingContainer;
修正后的完整后台代码
LinkButton btnCerFormsMon_Print = (LinkButton)sender; RepeaterItem Item = (RepeaterItem)btnCerFormsMon_Print.NamingContainer; Label referenceNo = (Label)Item.FindControl("rptrControlNo"); Label name = (Label)Item.FindControl("rptrRequester"); Label employeeNo = (Label)Item.FindControl("rptrEmployeeNo"); Label entryDate = (Label)Item.FindControl("rptrEntryDate"); Label document = (Label)Item.FindControl("rptrDocu"); Label Approver = (Label)Item.FindControl("rptrApprover"); Label requestStatus = (Label)Item.FindControl("rptrReqStatus"); Label rejectRemarks = (Label)Item.FindControl("rptrRejectRemarks"); hide_rptrControlNo.Text = referenceNo.Text; hide_rptrStatus.Text = requestStatus.Text;
补充说明
如果之后你需要获取整个Repeater控件实例,直接引用页面上的ID rptrCERFormsMonItems 即可,或者通过Item.Parent层级查找,但在这个场景里,你只需要从当前项中获取Label控件,所以转换为RepeaterItem就完全满足需求了。
内容的提问来源于stack exchange,提问作者Adrian Caspe
相关产品推荐
相关产品推荐

