Repeater两级菜单,如何触发事件?

qingxiangy 2011-09-07 03:59:13
用Repeater绑定产品类型还能进行分类链接吗?可以的话,怎么做呢?给点提示吧啊。
大概是这样的:左边是菜单,用Repeater绑定产品大类主键,同事嵌套小类主键,做的两级菜单。
默认的右边页面,是放了一个datalist,显示产品图片用的。
在我的产品类型表中不存在连接url字段,也不需要,只是,我现在的话,主要就是点击小类,同时在右边的datalist里面显示该小类的产品。
这个点击Repeater菜单里下的小类,显示产品图片,用什么事件来实现?
...全文
241 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingxiangy 2011-09-14
  • 打赏
  • 举报
回复
这都不算,问的什么问题呀?
qingxiangy 2011-09-09
  • 打赏
  • 举报
回复
谢谢,问题解决了,似乎又想的复杂了,就用Repeater 的OnItemCommand="Repeater1_ItemCommand"这个就行了,然后结合linkbutton一起使用。
<asp:LinkButton ID="LinkButton1" CommandName="Chilid" CommandArgument='<%# Eval("ItemCategoryID")%>' runat="server">
<%#Eval("ItemCategoryID")%></asp:LinkButton>
后台判断,做你想做的就可以了。
protected void Repeater2_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if(e.CommandName == "Chilid")
{
string ItemCategoryID = e.CommandArgument.ToString();
^protected void Repeater2_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if(e.CommandName == "Chilid")
{
string ItemCategoryID = e.CommandArgument.ToString();
//……做你想要做的操作。
string StrWhere1 = "companyid ='TEXFACTOR' and ItemCategoryID='" + ItemCategoryID + "'";
this.DataList1.DataSource = itemsBl.GetList(StrWhere1);
this.DataList1.DataBind();
}
}
}
this.DataList1.DataSource = itemsBl.GetList(StrWhere1);
this.DataList1.DataBind();
}
}
}
likevs 2011-09-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qingxiangy 的回复:]
<a href='Default.aspx?id='<%# Eval("ItemFamilyID") %>' target="right">我现在要做的事,当我点击左边菜单中的小类,现实产品表里面的产品。对了一共有三张表。(大类,小类,产品表)。而我现在是在母版页上直接写的这些代码,实现左边菜单,右边我放了一个datalist用来装产品图片及其他信息的。
我现在想问的是,我要怎么做,才能做到当我……
[/Quote]

//

直接用C#来控制的话,我这边不懂,因为你的菜单是在母版页上的,而最终显示数据的控制却放在内容页default。aspx上,

不过如果是从内容页default。aspx反回去控制母版页的话,倒是容易,因为母版就一个对象,而各内容页是变更的,

不过考虑到最终内容页和母版页是整合为一个页面,这倒是还有可能实现楼主要的需求,就是使用js

毕竟无论你的JS是在母版页定义还是在内容页定义,最终、双方都能调用

所以如果实在不行,就使用js,数据读取则用Ajax吧
qingxiangy 2011-09-07
  • 打赏
  • 举报
回复
<a href='Default.aspx?id='<%# Eval("ItemFamilyID") %>' target="right">我现在要做的事,当我点击左边菜单中的小类,现实产品表里面的产品。对了一共有三张表。(大类,小类,产品表)。而我现在是在母版页上直接写的这些代码,实现左边菜单,右边我放了一个datalist用来装产品图片及其他信息的。
我现在想问的是,我要怎么做,才能做到当我点击小类类别时,该小类类别下的所有信息都现实在右边的datalist里面


我的菜单本身就是在default。aspx上。右边菜单也是
qingxiangy 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 likevs 的回复:]
哦,原来楼主是问如何动态绑定JS函数Y,我再给两个例子代码,同样不解释

前台 onclick='<%# ReturnChangeFunction(Eval("ResumeID"))%>'

后台

/// <summary>
/// 绑定默认简历变更JS函数
/// </summary>
/// <param name="resumeID">所属的简历编号</par……
[/Quote]
所有的信息都是动态获取的,都放在母版页里面,下面的代码是实现左边菜单的,一般的,开发网站,我们设计都会分为:上,中,下。然后中间在分两个div,左边是菜单,右边是现实产品详细信息的。
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"
OnItemCommand="Repeater1_ItemCommand">
<ItemTemplate>
<table border='0' width='100%' cellspacing='0' cellpadding='0' onclick="fun('t<%#Eval("ItemFamilyID") %>')"
class='infoBoxContents2_table'>
<tbody>
<tr>
<td class="boxText" style="height: 6px;">
<ul class='categories'>
<li class='bg_list' id="l1"><a href='#'>
<%#Eval("ItemFamilyID")%>
</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<table border='0' width='100%' cellspacing='0' cellpadding='0' class='infoBox_table'
id="t<%#Eval("ItemFamilyID") %>" style="display: none;">
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<tr>
<td class="boxText" style="height: 6px;">
<ul class='categories'>
<li class='bg_list' id="l1" style="padding-left: 30px; width: 213px;">
<a href='Default.aspx?id='<%# Eval("ItemFamilyID") %>' target="right">我现在要做的事,当我点击左边菜单中的小类,现实产品表里面的产品。对了一共有三张表。(大类,小类,产品表)。而我现在是在母版页上直接写的这些代码,实现左边菜单,右边我放了一个datalist用来装产品图片及其他信息的。
我现在想问的是,我要怎么做,才能做到当我点击小类类别时,该小类类别下的所有信息都现实在右边的datalist里面

<%#Eval("ItemCategoryID")%></a>
</a></li></ul>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</ItemTemplate>
</asp:Repeater>
qingxiangy 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]
“同事嵌套小类主键”具体是什么意思,写明白。

假设以工程师只知道楼房结构,不知道、说不清楚楼房里的管道如何连接,那么他只能做外观设计而做不了更深入的事情。
[/Quote]

同时嵌套小类,点击大类收缩小类。明白了不?
likevs 2011-09-07
  • 打赏
  • 举报
回复
哦,原来楼主是问如何动态绑定JS函数Y,我再给两个例子代码,同样不解释

前台 onclick='<%# ReturnChangeFunction(Eval("ResumeID"))%>'

后台

/// <summary>
/// 绑定默认简历变更JS函数
/// </summary>
/// <param name="resumeID">所属的简历编号</param>
/// <returns>JS函数</returns>
protected string ReturnChangeFunction(object resumeID)
{
integrity = res.CountIntegrity(Convert.ToInt64(resumeID));
return string.Format("ChangeMain(this,{0},{1});", resumeID, integrity);
}






//////


前台
<asp:DropDownList ID="DDL_OS" runat="server">
<asp:ListItem Value="1">只允许企业查看</asp:ListItem>
<asp:ListItem Value="2">完全公开</asp:ListItem>
<asp:ListItem Value="3">完全保密</asp:ListItem>
</asp:DropDownList>


后台

protected void Rep_Resume_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DropDownList ddlOpenSet = (DropDownList)e.Item.FindControl("DDL_OS");
ddlOpenSet.SelectedValue = DataBinder.Eval(e.Item.DataItem, "OpenSet").ToString();
ddlOpenSet.Attributes.Add("onchange", string.Format("ChangeOS(this,{0});", DataBinder.Eval(e.Item.DataItem, "ResumeID")));
}
}



以下是事先定义好的JS函数
<script type="text/javascript">
//改变简历公开状态
function ChangeOS(obj,rID)
{}


//改变默认简历
function ChangeMain(obj,rID,integrityNum){}
kaizi_sun 2011-09-07
  • 打赏
  • 举报
回复
你在后台把大类和小类 都收集到一个table里,用一个类别字段作判断就好。
Repeater.datasource = table;
Repeater.databind();

全刷新的么 你直接绑定 成<li><a href="#">ssss</a><li>
不是全刷新么 你可以 用onclick事件,ajax后台, 回传刷新局部datalist 嵌套在updatapanel.
红魔大卫 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]

“同事嵌套小类主键”具体是什么意思,写明白。

假设以工程师只知道楼房结构,不知道、说不清楚楼房里的管道如何连接,那么他只能做外观设计而做不了更深入的事情。
[/Quote]

P哥每次都是这么的给力

Somnus133 2011-09-07
  • 打赏
  • 举报
回复
点击小类的事件,可以传一个参数,显示的那边就接受这个参数,继而显示了小类的产品了啊
Somnus133 2011-09-07
  • 打赏
  • 举报
回复
点击小类的事件,可以传一个参数,显示的那边就接受这个参数,继而显示了小类的产品了啊
  • 打赏
  • 举报
回复
“同事嵌套小类主键”具体是什么意思,写明白。

假设以工程师只知道楼房结构,不知道、说不清楚楼房里的管道如何连接,那么他只能做外观设计而做不了更深入的事情。
likevs 2011-09-07
  • 打赏
  • 举报
回复
我只给例子代码,不解释
<asp:Repeater ID="Rep_Company" runat="server"
onitemdatabound="Rep_Company_ItemDataBound">
<HeaderTemplate><ul class="zhaopin" id="ejiaA1"></HeaderTemplate>
<ItemTemplate>
<li>
<div class="zhaopin_danwei"><span class="zhaopin_danwei_a"><a title='<%# Eval("CompanyName") %>' href='JobView.aspx?CID=<%# Eval("CompanyID") %>' target="_blank"><%# ReturnCompanyName(Eval("CompanyName"), Eval("RegisterDays"), Eval("ContinuousDays"), Eval("VIPPoints"))%></a></span></div>
<div class="zhaopin_zhiwei">
<asp:Repeater ID="Rep_Postion" runat="server">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate><span class="zhaopin_zhiwei_a"><a href='JobView.aspx?CID=<%# Eval("CompanyID") %>&RID=<%# Eval("RecruitmentID") %>' target="_blank" title='<%# Eval("Position") %>'><%# ReturnPositionName(Eval("Position"), Eval("Staff"))%></a></span></ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
</div>
<div class="more"><a title="查看该单位的所有招聘职位信息" href='JobView.aspx?CID=<%# Eval("CompanyID") %>' target="_blank"><span class="LookMore">更多>></span></a></div>
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>


//下面是最外层控制的事件

//局部变量
Recruitment rec = new Recruitment();
Repeater rep;
int companyID;

//外层控件的事件
protected void Rep_Company_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
rep = (Repeater)e.Item.FindControl("Rep_Postion");
companyID = Convert.ToInt32(DataBinder.Eval(e.Item.DataItem, "CompanyID"));
rep.DataSource = rec.SelectOngoingPostion(companyID);
rep.DataBind();
}
}
zzr494684778 2011-09-07
  • 打赏
  • 举报
回复
<div id='<%# Eval("N_Id") %>' onclick="getHidden(this)"></div>
function getHidden(s){
window.open(".aspx?id="+s.id);//s.id这个就是你点击时获得Repeater菜单里下的小类对应的数据库ID
}
在前台把这个值传到对应页面,再根据这个值去找对应的产品
b.aspx:
Request.QueryString("id");去做相应的处理

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧