Repeater 内嵌 CheckBoxList 的同时绑定

本文介绍如何使用ASP.NET中的Repeater控件结合CheckBoxList显示年级及其对应的班级列表。通过数据库获取年级信息,并根据年级ID动态加载班级数据,实现灵活的数据展示。

Repeater 内嵌 CheckBoxList 显示年级及其下班级列表

页面HTML部分
-------------
<tr>
<td>年级班级列表:</td>
<td>
<asp:Repeater ID="repeater_GradeClass" runat="server" >
<ItemTemplate>
<table>
<tr>
<td>
<asp:Label ID="lbl_Grade" runat="server" style="color:Red;"
Text='<%# Eval("GradeName") %>'></asp:Label>
</td>
</tr>
<tr>
<td>
<asp:CheckBoxList ID="chklist_Classes" runat="server" RepeatDirection="horizontal" DataSource='<%# GetClassesByGradeID(Convert.ToString(Eval("GradeID"))) %>'
DataTextField='<%# GetClassesByGradeID(Convert.ToString(Eval("GradeID"))).Columns["ClassName"].ToString() %>'
DataValueField='<%# GetClassesByGradeID(Convert.ToString(Eval("GradeID"))).Columns["ClassID"].ToString() %>'
>
</asp:CheckBoxList>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>

页面cs部分
------------
#region 绑定年级信息 可在Page_Load时 调用该方法 进行页面绑定
private void BindRepeaterGateway()
{
//...相关数据库访问省略
DataSet ds = GetDataSetGrade();//两个字段 GradeID,GradeName
if ((ds != null) && (ds.Tables[0].Rows.Count > 0))
{
DataSet ds1 = GetDataSetClass();//三个字段 GradeID,ClassID,ClassName
ViewState.Add("dsClass", ds1);

this.repeater_GradeClass.DataSource = ds.Tables[0];
this.repeater_GradeClass.DataBind();

}
}
#endregion

#region 根据年级GradeID 得到其下的班级Class
protected DataTable GetRegItemsByGatewayID(string strGradeID)
{
if (ViewState["dsClass"] != null)
{
DataView dv = ((DataSet)ViewState["dsClass"]).Tables[0].DefaultView;
dv.RowFilter = " GradeID = "+strGradeID+" ";
DataTable dt = dv.ToTable();
return dt;
}
else
{
return null;
}
}
#endregion


//取得选中的年级值
string items = "";
for (int i = 0; i < this.repeater_GradeClass.Items.Count; i++)
{
CheckBoxList chklist = (CheckBoxList)this.repeater_GradeClass.Items[i].FindControl("chklist_Classes");
for (int j = 0; j < chklist.Items.Count; j++)
{
if (chklist.Items[j].Selected)
items += "," + chklist.Items[j].Value;
}
}
if (items.Length > 0)
items = items.Substring(1);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值