datalist嵌套
[复选框]单位一[]单位一人员一 []单位一人员二 []单位一人员三 []单位一人员四
[复选框]单位二
[]单位二人员一 []单位二人员二 []单位二人员三 []单位二人员四
………
要求:
要求使用datalist进行动态绑定,1)随单位的增加而增加,每个单位下面对应该单位的人员;2)单击单位复选框,对应单位人员全部选择;3)通过一个button能获取整个页面中选中的人员。 --------------------编程问答-------------------- 第一个需求,使用JS
第二个需求,点击Button之后,遍历DataList --------------------编程问答-------------------- 第一个需求,DataList嵌套
第二个需求,使用JS
第三个需求,点击Button之后,遍历DataList --------------------编程问答-------------------- 你这个不需要嵌套,一层Repeater就可以了,用模板列实现之 --------------------编程问答-------------------- treeview先绑定部门,再绑定人员
或第二个datalist使用chekboxlist
点击第一层,通过JS设置chekcboxlist的选择状态
foreach(DataListItem item in datalist1.Items)
{
DataList d=item.FindControl("") as DataList;
foreach(DataListItem item2 in d.Items)
{
}
} --------------------编程问答--------------------
up --------------------编程问答-------------------- 太对了~~~
--------------------编程问答--------------------
就这么个思路。。 --------------------编程问答--------------------
<div>
<table>
<asp:DataList ID="DataList1" runat="server" onitemdatabound="DataList1_ItemDataBound" >
<ItemTemplate>
<tr><td>
<asp:CheckBox ID="CheckBox1" runat="server" areano='<%#Eval("areano") %>' OnCheckedChanged="CheckedChanged" AutoPostBack="true"/><%#Eval("areaname") %></td></tr>
<tr><td style="padding-left:15px">
<asp:DataList ID="DataList2" runat="server" RepeatDirection="Horizontal" RepeatColumns="5">
<ItemTemplate>
<asp:CheckBox ID="CheckBox2" runat="server" areano='<%#Eval("areano") %>'/><%#Eval("areaname") %>
</ItemTemplate>
</asp:DataList>
</td></tr>
</ItemTemplate>
</asp:DataList>
</table>
</div>
--------------------编程问答--------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
dlbind();
}
}
public void dlbind()
{
string sql = "";//绑定单位语句
DataList1.DataSource = DbHelperSQL.Query(sql);
DataList1.DataBind();
}
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
DataList DataList2 = (DataList)e.Item.FindControl("DataList2");
DataRowView dr = (DataRowView)e.Item.DataItem;
string sql = "";//绑定人员语句
DataList2.DataSource = DbHelperSQL.Query(sql);
DataList2.DataBind();
}
public void CheckedChanged(object sender,EventArgs e)
{
for (int i = 0; i < DataList1.Items.Count; i++)
{
CheckBox cbx1 = DataList1.Items[i].FindControl("CheckBox1") as CheckBox;
DataList DataList2 = (DataList)DataList1.Items[i].FindControl("DataList2");
for (int j = 0; j < DataList2.Items.Count; j++)
{
CheckBox cbx2 = DataList2.Items[j].FindControl("CheckBox2") as CheckBox;
if (cbx1.Checked == true)
{
cbx2.Checked = true;
}
else
{ cbx2.Checked = false; }
}
}
}
--------------------编程问答-------------------- 13.主从显示
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr class="c1">
<td><%#Eval("sort") %></td>
<td><a href="http://www.cnblogs.com/shtml/view_cls1/ViewCls_<%#Eval("id") %>.shtml" target="_blank"><%#Eval("cls_name") %></a> <a href="./admin_cls2_add.aspx?alt=1&id=<%#Eval("id") %>">[添加二级分类]</a></td>
<td><asp:Button ID="Button1" runat="server" Text="生成" CssClass="btn" CommandName='<%#Eval("id") %>' OnCommand="cls1Shtml" /></td>
<td><asp:Button ID="Button2" runat="server" Text="编辑" CssClass="btn" CommandName='<%#Eval("id") %>' OnCommand="cls1Edit" /></td>
<td><asp:Button ID="Button3" runat="server" Text="删除" CssClass="btn" CommandName='<%#Eval("id") %>' OnCommand="cls1Delete" OnClientClick="return confirm('确定删除吗?')" /></td>
</tr>
<asp:Repeater ID="Repeater2" runat="server" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("TwoTable") %>'>
<!--DataSource='<%#Eval("TwoTable") %>'直接这样也是可以的-->
<ItemTemplate>
<tr class="c2" onmouseover="className='tdover2'" onmouseout="className='tdout2'">
<td> <%#Eval("[\"sort\"]")%></td>
<td class="c2_1"><a href='http://www.cnblogs.com/shtml/view_cls2/ViewCls2_<%#Eval("[\"id\"]")%>_0.shtml' target="_blank">二级分类: <%#Eval("[\"cls_name\"]")%></a></td>
<td><a href="#">生成</a></td>
<td><a href="./admin_cls2_add.aspx?alt=2&id=<%#Eval("[\"id\"]")%>"& gt;编辑</a></td>
<td><asp:LinkButton ID="delete" CommandName='<%#Eval("[\"id\"]")%>' OnCommand="cls2Delete" OnClientClick="return confirm('确定删除吗?')" runat="server">删除</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
后台代码
DataSet Ds = new DataSet();
Ds.Tables.Add(Pn163.com_BLL.BLL_cls1.cls1DataSet().Tables[0].Copy());
Ds.Tables.Add(Pn163.com_BLL.BLL_cls2.cls2DataSet().Tables[0].Copy());
Ds.Relations.Add("TwoTable",Ds.Tables["cls1"].Columns["id"], Ds.Tables["cls2"].Columns["cls1_code"]);
Telesa.DataBind.ToBind(Repeater1, Ds);
2.用ajax或者事件
3.循环DataList,然后findControls --------------------编程问答-------------------- 就这样,up
--------------------编程问答--------------------
<asp:Repeater id="rptCategories" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
</HeaderTemplate>
<ItemTemplate>
<!--分类名称-->
<tr><th><%# DataBinder.Eval(Container.DataItem, "TypeName") %></th></tr>
<!--分类下的产品-->
<asp:Repeater id="rptProduct" runat="server">
<ItemTemplate>
<tr><td><a href='ProductInfo.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "ID") %>'><%# DataBinder.Eval(Container.DataItem, "ProductName") %></a></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
//在绑定分类品名时,绑定分类下的产品
private void rptCategories_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
BLL.Products products =new BLL.Products();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rptProduct = (Repeater) e.Item.FindControl("rptProduct");
//找到分类Repeater关联的数据项
DataRowView rowv = (DataRowView)e.Item.DataItem;
//提取分类ID
int CategorieId = Convert.ToInt32(rowv["ID"]);
//根据分类ID查询该分类下的产品,并绑定产品Repeater
rptProduct.DataSource = products.GetProductsByCategorieId(CategorieId);
rptProduct.DataBind();
}
}
补充:.NET技术 , ASP.NET