这是后台代码 protected void Page_Load(object sender, EventArgs e)
{
//获得最外面TypeName标题
this.Repeater1.DataSource = BType.getTypeName().Tables[0];
this.Repeater1.DataBind();
} protected void Repeater1_ItemDataBound1(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = (Repeater)e.Item.FindControl("Repeater_1");
DataRowView rowv = (DataRowView)e.Item.DataItem;
int id = Convert.ToInt32(rowv["ID"]);
rpt.DataSource = BType.getAllByStu(id).Tables[0];
rpt.DataBind();
}
}前台 <div>
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound1"
>
<HeaderTemplate>
<table>
<tr>
<td>
产品名称
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td><%#Eval("typename")%></td></tr>
<!--分类下的产品-->
<asp:Repeater id="rptProduct" runat="server" >
<ItemTemplate>
<tr><td><%#Eval("proname") %></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
</div>报错ID 既不是表 Table 的 DataColumn 也不是 DataRelation 请高手解决 在线等
{
//获得最外面TypeName标题
this.Repeater1.DataSource = BType.getTypeName().Tables[0];
this.Repeater1.DataBind();
} protected void Repeater1_ItemDataBound1(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = (Repeater)e.Item.FindControl("Repeater_1");
DataRowView rowv = (DataRowView)e.Item.DataItem;
int id = Convert.ToInt32(rowv["ID"]);
rpt.DataSource = BType.getAllByStu(id).Tables[0];
rpt.DataBind();
}
}前台 <div>
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound1"
>
<HeaderTemplate>
<table>
<tr>
<td>
产品名称
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td><%#Eval("typename")%></td></tr>
<!--分类下的产品-->
<asp:Repeater id="rptProduct" runat="server" >
<ItemTemplate>
<tr><td><%#Eval("proname") %></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
</div>报错ID 既不是表 Table 的 DataColumn 也不是 DataRelation 请高手解决 在线等
根据你这句话来判断,是外层的rpt中绑定
你的这个方法不是根据当前数据前来判断?
//获得最外面TypeName标题
this.Repeater1.DataSource = BType.getTypeName().Tables[0];
this.Repeater1.DataBind();
这个获得了最外层repeater的标题 也可以获得studid
然后是根据studid来查询第二个repeater的内容
onitemdatabound="repeater1_ItemDataBound">
<HeaderTemplate>
<table width="75%" border="0" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td height="30" bgcolor="#e6edf2" align="center">角色 | 操作</td>
<asp:Repeater ID="repeater2" runat="server">
<ItemTemplate>
<td height="30" align="center" bgcolor="#e6edf2"><span class="S1"><strong><%# Eval("powerName") %></strong></span></td>
</ItemTemplate>
</asp:Repeater>
<td height="30" align="center" bgcolor="#e6edf2"><span class="S1"><strong>操作</strong></span></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td height="30" align="center" bgcolor="#FFFFFF"><span class="S1">
<asp:Label ID="lab" runat="server" Text='<%# Eval("roleID") %>' Visible="true"></asp:Label> | <%# Eval("roleName") %>
</span>
</td>
<asp:Repeater ID="repeater3" runat="server" onitemdatabound="repeater3_ItemDataBound">
<ItemTemplate>
<td bgcolor="#FFFFFF" align="center"><asp:Label ID="ss" runat="server" Visible="false" /> <asp:Label ID="labpower" runat="server" Text='<%# Eval("powerID") %>' Visible="false"></asp:Label> | <asp:CheckBox ID="checkBox" oncheckedchanged="checkBox_CheckedChanged" AutoPostBack="true" runat="server" /> </td>
</ItemTemplate>
</asp:Repeater>
<td bgcolor="#FFFFFF" align="center"><span class="S1">左边勾选</span></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
cs protected void repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Entity.PowerEntity pw = new Entity.PowerEntity();
pw.powerWhere = "parentID<>0";
if (e.Item.ItemType == ListItemType.Header)//找到表头中的repeater2并为它绑定数据
{
Repeater rep = (Repeater)e.Item.FindControl("repeater2");
DataSetBind(pw, rep);
}
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)//找到模版中的repeater3并为它绑定数据(权限操作的数据源)
{
Repeater rep = (Repeater)e.Item.FindControl("repeater3");
DataSetBind(pw, rep);
}
}
protected void repeater3_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
int rolepowerids = 0;
int roleIDs = 0;
int powerIds = 0;
bool isBool = false;
Entity.RolePowerEntity rolepowers = new Entity.RolePowerEntity();
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
roleIDs = Convert.ToInt32(((DataRowView)((RepeaterItem)((Repeater)sender).NamingContainer).DataItem)["roleID"].ToString());
//用到内层Repeater的NamingContainer属性得到包含了它的外层Repeater的RepeaterItem,得到角色的ID号 powerIds = Convert.ToInt32(((Label)e.Item.FindControl("labpower")).Text);//找到该列的权限操作的ID号
rolepowers.PowerID = powerIds;
rolepowers.RoleID = roleIDs;
Entity.RolePowerEntity rp = logic.RolePower.Exquery_RolePower_List(rolepowers); //通过该方法返回一条数据,为下面的chbox赋值,这里是关健
CheckBox ck = ((CheckBox)e.Item.FindControl("checkBox"));
Label lb = (Label)e.Item.FindControl("ss");
lb.Text = rp.RolePowerID.ToString();
ck.Checked = rp.isRole; //将变量保存到选框中的属性中
ck.Attributes.Add("rolePowerID",rp.RolePowerID.ToString());
ck.Attributes.Add("roleID", rp.RoleID.ToString());
ck.Attributes.Add("powerID", rp.PowerID.ToString());
}
}
一个是e.Item.findControl("Repeater_1");应该改成e.Item.findControl("rptProduct")后面的repeaterID写错了
一个是 int id = Convert.ToInt32(((DataRowView)e.Item.DataItem).Row["id"]);
没有绑定自己想绑定的studid 非常感谢
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound1"
>
<HeaderTemplate>
<table>
<tr>
<td>
产品名称
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td>
<%#Eval("typename")%>
<input type="hidden" id="hd_id" runat="server" value="<%# Eval(ID号) %>" />
</td></tr>
<!--分类下的产品-->
<asp:Repeater id="rptProduct" runat="server" >
<ItemTemplate>
<tr><td><%#Eval("proname") %></td></tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
</div>后台修改 protected void Page_Load(object sender, EventArgs e)
{
//获得最外面TypeName标题
this.Repeater1.DataSource = BType.getTypeName().Tables[0];
this.Repeater1.DataBind();
} protected void Repeater1_ItemDataBound1(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = (Repeater)e.Item.FindControl("rptProduct");
int id = 0;
HtmlInputHidden hd=(HtmlInputHidden )e.item.findControl("hd_id");
int.TryParse(hd.value,out id);
rpt.DataSource = BType.getAllByStu(id).Tables[0];
rpt.DataBind();
}
}
<ItemTemplate>
<%#Eval("uname") %>
<%#Eval("upass") %><br />
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
abc<%#Eval("uname") %>
efg<%#Eval("upass") %><br />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
后台代码 protected void Page_Load(object sender, EventArgs e)
{ Repeater1.DataSource = UserInfoManager.getUserInfoByLinq();
Repeater1.DataBind();
}
protected void Repeater2(object sender, RepeaterItemEventArgs e)
{
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;
if (rep != null)
{
rep.DataSource = UserInfoManager.getUserInfoByLinq();
rep.DataBind();
}
}