我的项目使用三层做的,网上的代码我都看不懂啊请大家帮帮我啊!
this.Repeater1.DataSource=PlateManager.GetPlateAllBytid(1); //Repeater1的数据源是一个Ilist<plate>的集合,网上的好像用的都是dataset
this.Repeater2.DataSource=PlateManager.GetPlateByPid(p.id); //Repeater2的数据源是一个Ilist<plate>的集合,里边的参数是plate实体类里边的id属性;就是这样啦怎么样才能把Repeater2嵌套在Repeater1里边啊数据源就用这两个,我在线等回答谢谢大家了!
this.Repeater1.DataSource=PlateManager.GetPlateAllBytid(1); //Repeater1的数据源是一个Ilist<plate>的集合,网上的好像用的都是dataset
this.Repeater2.DataSource=PlateManager.GetPlateByPid(p.id); //Repeater2的数据源是一个Ilist<plate>的集合,里边的参数是plate实体类里边的id属性;就是这样啦怎么样才能把Repeater2嵌套在Repeater1里边啊数据源就用这两个,我在线等回答谢谢大家了!
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater Repeater2= (Repeater)e.Item.FindControl("Repeater2");
if (Repeater2!= null)
{
string id = ((DataRowView)e.Item.DataItem).Row["Order_ID"].ToString();// Order_ID改成你plate 的id
Repeater2.DataSource = PlateManager.GetPlateByPid(p.id); Repeater2.DataBind();
} }
}
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rpt = (Repeater)e.Item.FindControl("rptchild");
T t= (T)e.Item.DataItem; }
}
或
<asp:Repeater ID="rptchild" runat="server" DataSource='<%#Getdata(Eval("id")) %>' >
public List<T> rptchild(object o)
{...
可是那个t里边根本获取不到里边的属性。没有t.id这个属性啊
前台:
<asp:Repeater ID="repBig" runat="server">
<ItemTemplate>
<ul>
<li>
<img src="images/news_dian.gif" /> <%#Eval("name") %></li>
<asp:Repeater ID="repSmall" runat="server" DataSource='<%#Bind("list") %>'>
<ItemTemplate>
<li id="tree"><a href='SearchResult.aspx?sid=<%#Eval("id") %>'>
<%#Eval("name") %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
后台: protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DisplaySortBig();//显示产品大类别
}
}
/// <summary>
/// 绑定产品大类信息
/// </summary>
private void DisplaySortBig()
{
repBig.DataSource = SortBigManager.GetAllSortBig();
repBig.DataBind();
}
商品大类实体类 private int id;
/// <summary>
/// id
/// </summary>
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
/// <summary>
/// 类别名称
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
private List<SortSmall> list;
/// <summary>
/// 商品小类
/// </summary>
public List<SortSmall> List
{
get { return list; }
set { list = value; }
}数据访问类
/// <summary>
/// 查询所有商品大类别信息
/// </summary>
/// <returns></returns>
public static List<SortBig> GetAllSortBig()
{
string sql = "select * from sortBig";
List<SortBig> sortBigList = new List<SortBig>();
DataTable dt = DbHelperSQL.GetDataSet(sql, null);
foreach (DataRow row in dt.Rows)
{
SortBig sortBig = new SortBig();
sortBig.Id = (int)row["id"];
sortBig.Name = (string)row["name"];
sortBig.List=SortSmallService.GetSortBigById((int)row["id"]); //这个方法是根据id查询商品小类的详细信息
sortBigList.Add(sortBig);
}
return sortBigList;
}
<ItemTemplate>
<%#Eval("部门名称")%>|
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<%#Eval("人员姓名")%>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
测试页面:protected void Page_Load(object sender, EventArgs e)
{
//查询数据并把查询结果附值给DataTable
DataTable dt=自已写代码;
Repeater1.DataSource=dt;
Repeater1.DataBind();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rp=(Repeater)e.Item.FindControl("Repeater2");
string id=DataBinder.Eval(e.Item.DataItem,"id").ToString(); //取得部门id
//根据当前部门的id从人员表中查找员工的数据查询并附值给一个DataTable dt rp.DataSource=dt;
rp.DataBind();
} }
<asp:Repeater runat="server" ID="rptypelist" OnItemDataBound="rptypelist_ItemDataBound">
<ItemTemplate>
<tr style="background-color: ThreeDShadow;">
<td>
<input id="txtID" type="text" value='<%#Eval("Id")%>' runat="server" visible="false" />
<b>
<%#Eval("Title")%>
</b>
</td>
<td>
<%#Eval("PubDate")%>
</td>
<td>
<%#Eval("Clicks")%>
</td>
</tr>
<tr>
<td colspan="3">
<table id="askTop" style="margin-left: 10px;" width="100%">
<asp:Repeater runat="server" ID="rpquestionlist">
<ItemTemplate>
<tr>
<td>
<%#Eval("AuthorName")%>
</td>
<td>
<%#Eval("Contents")%>
</td>
<td>
<%#Eval("CommentPubDate")%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table> private void RpTypeBind(int uid)
{
this.rptypelist.DataSource = ArticlesManager.GetUserAllArticles(uid);
this.rptypelist.DataBind();
} protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = e.Item.FindControl("rpquestionlist") as Repeater;
//HtmlInputText txtID = (HtmlInputText)e.Item.FindControl("txtID");
//int articleId = Convert.ToInt32(txtID.Value);
Articles rowv = (Articles)e.Item.DataItem;
int articleId = rowv.Id;
rep.DataSource = CommentsManager.CommentsByArticel(articleId);
rep.DataBind();
}
}
我用了二种方法,可以用隐藏域<input id="txtID" type="text" value='<%#Eval("Id")%>' runat="server" visible="false" />
再用HtmlInputText txtID = (HtmlInputText)e.Item.FindControl("txtID");
int articleId = Convert.ToInt32(txtID.Value);
第二种就是用 Articles rowv = (Articles)e.Item.DataItem;
int articleId = rowv.Id;