本例以DataList中包含CheckBox为例讲述被容器包含的控件的检查方法。
关于在模板/容器(可以是DataGrid,DataList,Adpter等)内包含控件的检查方法。如果在模板中给控件(CheckBox)赋予了一个ID(chkTest),那么我们可以从其容器中检索此空间。特别要提醒的是,因为模板(ItemTemplate)的重复循环,所以若干控件具有同一ID(chkTest),但是每个控件在逻辑上也包含在容器的命名空间中。
可以在 DataList 的 Items 集合中遍历以检索给定索引的 DataListItem,然后调用 DataListItem 的 FindControl 方法(从基 Control 类继承)检索具有特定 ID 的控件。
例子的代码:
asp.net部分
<form id="Form1" method="post" runat="server">
<P>
<asp:DataList id="DataList1" runat="server">
<ItemTemplate>
<TABLE>
<TR>
<TD><%# DataBinder.Eval(Container.DataItem,"id")%></TD>
</TR>
<TR>
<TD>
<asp:CheckBox id="chkTest" Runat="server" Text=<%# DataBinder.Eval(Container.DataItem,"id")%>></asp:CheckBox></TD>
</TR>
</TABLE>
</ItemTemplate>
</asp:DataList></P>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
</form>C#部分
Page_Load中DataList的绑定:
if(!this.IsPostBack)
{
conn c=new conn();
this.DataList1.DataSource=c.getData("select * from a");
this.DataList1.DataBind();
}Button1_Click方法(核心代码):
private void Button1_Click(object sender, System.EventArgs e)
{
for(int i=0;i<this.DataList1.Items.Count;i++)
{
string ischecked=((CheckBox)(this.DataList1.Items[i].FindControl("chkTest"))).Checked.ToString();
if(ischecked=="True")
{
Response.Write(((CheckBox)(this.DataList1.Items[i].FindControl("chkTest"))).Text);
}
}
}

浙公网安备 33010602011771号