举例数据库里 表Biao 有列 如下列 如下值
id Name Number Type
1 A 1 1
2 B 1 1
3 C 1 2
4 D 2 2
5 E 2 2比如说在BiaoSQL.cs里有如下SQL
//获取type不重复显示
public void GetType()
{
string Sql="Select distinct type from Biao";
return SqlHelper.ExecuteTable(CommandType.Text, Sql);
}//根据Type获取相同type的Number 不重复显示Number
public void GetNumByType(string Type)
{
string Sql="Select distinct Number from Biao where Type=@type "
SqlParameter[] Parameter =
{
new SqlParameter("@Type",SqlDbType.NVarChar)
};
Parameter[0].Value = Type;
return SqlHelper.ExecuteTable(CommandType.Text, Sql, Parameter);
}//根据Type和Number获取相对应内容
public void GetNameByNumAndType(string Number,string Type)
{
string Sql="Select distinct Number from Biao where Type=@type "
SqlParameter[] Parameter =
{
new SqlParameter("@Number",SqlDbType.NVarChar)
new SqlParameter("@Type",SqlDbType.NVarChar)
};
Parameter[0].Value = Number;
Parameter[1].Value = Type;
return SqlHelper.ExecuteTable(CommandType.Text, Sql, Parameter);
}我的想法是这样子的
A.aspx
<asp:Repeater ID="Type" runat="server" OnItemDataBound="Type_ItemDataBound">
<ItemTemplate>
<%#Eval(Type)%>
<asp:Repeater ID="NumberByType" runat="server" OnItemDataBound="NumberByType_ItemDataBound">
<ItemTemplate>
<%#Eval(Number)%>
<asp:Repeater ID="NameByNumAndType" runat="server" >
<ItemTemplate>
<%#Eval(Name)%>
</ItemTemplate>
</Repeater>
</ItemTemplate>
</Repeater>
</ItemTemplate>
</Repeater>
相对应的CS页面中A.aspx.cs
//最外层先读出来Type并且不重复显示
public void Type(){
DataTable ShowType= BiaoSQL.GetType(); this.Type.DataSource = ShowType;
this.Type.DataBind();
}//第二层
protected void NumberByType_ItemDataBound(object sender, RepeaterItemEventArgs c)
{
if (c.Item.ItemType == ListItemType.Item || c.Item.ItemType == ListItemType.AlternatingItem)
{
RepeaterItem item = c.Item;
DataRowView rowv = (DataRowView)c.Item.DataItem;
DataTable ShowNumberByType= BiaoSQL.GetNumberByType(rowv[0].ToString());//把分类Repeater关联的数据项传入参数中
Repeater rpt = (Repeater)e.Item.FindControl("NumberByType");//第二层的ID
if (ShowNumberByType!= null && ShowNumberByType.Rows.Count > 0)
{ rpt.DataSource = ShowNumberByType;
rpt.DataBind();
}
}
}
嵌套一共三成之后 不知道第二层是不是这么写。如果是这样子的话 我想完成第三层 该怎么去写?
望帮助。。我是菜鸟。。唉。。
id Name Number Type
1 A 1 1
2 B 1 1
3 C 1 2
4 D 2 2
5 E 2 2比如说在BiaoSQL.cs里有如下SQL
//获取type不重复显示
public void GetType()
{
string Sql="Select distinct type from Biao";
return SqlHelper.ExecuteTable(CommandType.Text, Sql);
}//根据Type获取相同type的Number 不重复显示Number
public void GetNumByType(string Type)
{
string Sql="Select distinct Number from Biao where Type=@type "
SqlParameter[] Parameter =
{
new SqlParameter("@Type",SqlDbType.NVarChar)
};
Parameter[0].Value = Type;
return SqlHelper.ExecuteTable(CommandType.Text, Sql, Parameter);
}//根据Type和Number获取相对应内容
public void GetNameByNumAndType(string Number,string Type)
{
string Sql="Select distinct Number from Biao where Type=@type "
SqlParameter[] Parameter =
{
new SqlParameter("@Number",SqlDbType.NVarChar)
new SqlParameter("@Type",SqlDbType.NVarChar)
};
Parameter[0].Value = Number;
Parameter[1].Value = Type;
return SqlHelper.ExecuteTable(CommandType.Text, Sql, Parameter);
}我的想法是这样子的
A.aspx
<asp:Repeater ID="Type" runat="server" OnItemDataBound="Type_ItemDataBound">
<ItemTemplate>
<%#Eval(Type)%>
<asp:Repeater ID="NumberByType" runat="server" OnItemDataBound="NumberByType_ItemDataBound">
<ItemTemplate>
<%#Eval(Number)%>
<asp:Repeater ID="NameByNumAndType" runat="server" >
<ItemTemplate>
<%#Eval(Name)%>
</ItemTemplate>
</Repeater>
</ItemTemplate>
</Repeater>
</ItemTemplate>
</Repeater>
相对应的CS页面中A.aspx.cs
//最外层先读出来Type并且不重复显示
public void Type(){
DataTable ShowType= BiaoSQL.GetType(); this.Type.DataSource = ShowType;
this.Type.DataBind();
}//第二层
protected void NumberByType_ItemDataBound(object sender, RepeaterItemEventArgs c)
{
if (c.Item.ItemType == ListItemType.Item || c.Item.ItemType == ListItemType.AlternatingItem)
{
RepeaterItem item = c.Item;
DataRowView rowv = (DataRowView)c.Item.DataItem;
DataTable ShowNumberByType= BiaoSQL.GetNumberByType(rowv[0].ToString());//把分类Repeater关联的数据项传入参数中
Repeater rpt = (Repeater)e.Item.FindControl("NumberByType");//第二层的ID
if (ShowNumberByType!= null && ShowNumberByType.Rows.Count > 0)
{ rpt.DataSource = ShowNumberByType;
rpt.DataBind();
}
}
}
嵌套一共三成之后 不知道第二层是不是这么写。如果是这样子的话 我想完成第三层 该怎么去写?
望帮助。。我是菜鸟。。唉。。
解决方案 »
- C#编程:关于“输入字符串的格式不正确”问题
- 菜鸟初学~认识接口的作用
- 这一段时间学习Ajax大家有没有好的建议和书籍推荐一下
- 我想文本框里输入的只能是数字!请问如何用验证控件实现?
- 从 char 数据类型到 datetime 数据类型的转换
- 看似简单的问题
- 如何获取一个WebForm的HTTP头信息和POST过来的XML字符串?
- 参数ref和out的区别?
- 【初学者问题】微软的很多软件里面有一根凹直线,但是在VS.net中为什么没有?
- 请问用Visual Studio.Net编译的程序能在Win98系统上运行吗?
- datagridview中不同的状态行显示不同的颜色
- 弱弱的问:vs 2010和 vs2008两者开发的程序在网络编程效率上有哪些区别?请举例
<ItemTemplate>
<table style="width: 880px">
<tr>
<td>
<asp:Label runat="server" ID="lblTitle" Text='<%# Eval("typename") %>'></asp:Label>
</td>
</tr>
</table>
<asp:Repeater runat="server" ID="rpQuestion" DataSource='<%# Bind1(Eval("typename").ToString()) %>'>
<ItemTemplate>
<table>
<tr>
<td>
<%# Eval("bid")%>
<asp:Label runat="server" ID="lblQuestion" Text='<%# Eval("title") %>'></asp:Label>
<%-- <asp:HiddenField runat="server" ID="hidID" Value='<%# Eval("id")%>' />--%>
</td>
</tr>
<tr>
</tr>
</table>
<asp:Repeater runat="server" ID="rpAnswer" DataSource='<%# Bind2(Eval("id").ToString()) %>'>
<ItemTemplate>
<table>
<tr>
<td>
</td>
</tr>
<tr>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
父级
<%# ((Label)((RepeaterItem)((Repeater)(((RepeaterItem)Container).NamingContainer)).NamingContainer).FindControl("Label1")).Text %>
e.Item.Parent.Parent.FindControl("")