我CheckBox
内有Repeater
。像这样:
<asp:Repeater ID="rptEvaluationInfo" runat="server">
<ItemTemplate>
<asp:Label runat="server" Id="lblCampCode" Text="<%#Eval("CampCode") %>"></asp:Label>
<asp:CheckBox runat="server" ID="cbCoaching" value="coaching-required" ClientIDMode="AutoID" AutoPostBack="True" OnCheckedChanged="cbCoaching_OnCheckedChanged" />
</ItemTemplate>
</asp:Repeater>
当有人点击checkbox
时,我想在我的代码中获取整行。因此,如果发生CheckedChanged
,我想在后面的代码中获得Text
Label
的{{1}}。
有可能吗?
我设法写了这么多代码。
lblCampCode
答案 0 :(得分:8)
所以你想获得RepeaterItem
?您可以通过转换NamingContainer
{sender}参数的CheckBox
来实现。那么你几乎就在那里,你需要FindControl
作为标签:
protected void cbCoaching_OnCheckedChanged(object sender, EventArgs e)
{
CheckBox chk = (CheckBox)sender;
RepeaterItem item = (RepeaterItem) chk.NamingContainer;
Label lblCampCode = (Label) item.FindControl("lblCampCode");
string CampCode = lblCampCode.Text;// here i want to get the value of CampCode in that row
}
这比Parent.Parent
更有优势 - 即使您添加其他容器控件(例如Panel
或Table
),它也能正常工作。
顺便说一句,对于ASP.NET中的任何数据绑定Web控件(如GridView
等),它的工作方式类似。