Asp.Net Repeaterの2層ネストと遍歴取値の簡単な実装(checkbox)
1つ目のネスト方法:
2つ目のネスト方法:checkbox
ネストされたCheckbox、二層遍歴:
<select id="s6" multiple="multiple">
<asp:Repeater ID="rpl_dept" runat="server"
onitemdatabound="rpl_dept_ItemDataBound">
<ItemTemplate>
<optgroup label="Name") %>">
<asp:Repeater ID="rpl_user" runat="server">
<ItemTemplate>
<option>Eval("Name")%>option>
ItemTemplate>
asp:Repeater>
optgroup>
ItemTemplate>
asp:Repeater>
select>
protected void rpl_bind()
{
com.hmby.BLL.Depts dept = new com.hmby.BLL.Depts();
string strWhere = "";
DataTable dt = new DataTable();
dt = dept.GetList(strWhere).Tables[0];
if (dt.Rows.Count > 0)
{
this.rpl_dept.DataSource = dt;
this.rpl_dept.DataBind();
}
}
protected void rpl_dept_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = e.Item.FindControl("rpl_user") as Repeater;// repeater
DataRowView rowv = (DataRowView)e.Item.DataItem;// Repeater
int deptId = Convert.ToInt32(rowv["Id"]); // id
DataTable dt = new DataTable();
com.hmby.BLL.Users user = new com.hmby.BLL.Users();
string strWhere = " DeptId=" + deptId;
dt = user.GetList(strWhere).Tables[0]; ;
if (dt.Rows.Count > 0)
{
rep.DataSource = dt;
rep.DataBind();
}
}
}
2つ目のネスト方法:checkbox
<asp:Repeater ID="rpl_mParent" runat="server"
onitemdatabound="rpl_mParent_ItemDataBound">
<ItemTemplate>
<tr>
<td style="vertical-align:top;background-color:#ffa !important;">
<input type="checkbox" id="cbox_p" value='' runat="server"/>
<label class="choice" for="cb1">Eval("ModelName")%>label>
td>
tr>
<asp:Repeater ID="rpl_mChild" runat="server">
<ItemTemplate>
<tr><td>
<input type="checkbox" id="cbox_c" value='' runat="server"/>
<label class="choice" for="cb1">Eval("ModelName")%>label>
td>tr>
ItemTemplate>
asp:Repeater>
ItemTemplate>
asp:Repeater>
ネストされたCheckbox、二層遍歴:
for (int i=0;i<this.rpl_mParent.Items.Count;i++)
{
HtmlInputCheckBox cbox_p = (HtmlInputCheckBox)rpl_mParent.Items[i].FindControl("cbox_p");
if (cbox_p.Checked)
{
// checkbox_p
JsUtil.Alert(this, "p");
}
Repeater rplChild = (Repeater)rpl_mParent.Items[i].FindControl("rpl_mChild");
string c = "";
for (int j=0;j"cbox_c");
if (cbox_c.Checked)
{
// checkbox_c
c += cbox_c.Value + ",";
}
}
JsUtil.Alert(this, c);
}