请老师看下如何给Repeater 的项加 class="current"
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" onitemdatabound="Repeater1_ItemDataBound"><ItemTemplate>
<li><%# Eval("typeName") %></li>
</ItemTemplate>
</asp:Repeater>
<br/>
我想根据 Request.QueryString["typeName"] 的值在绑定数据时给li加个 class=" current" 属性 ,请问该怎么做呢?
另外如果我把绑定代码写成下面这样的话
<li runat="server" id="item"><%# Eval("typeName") %></li>
在生成的HTML代码中会有很多像<li id="Repeater1_ctl04_item" 垃圾的HTML ID标记
我不想生成垃圾的id 请老师帮我看下该怎么处理才能生成想下面这样的html代码
<ul>
<li>.....</li>
<li class="current">.....</li>
<li>.....</li>
<li>.....</li>
</ul>
--------------------编程问答-------------------- 另外如果我把绑定代码写成下面这样的话
<li runat="server" id="item"> <%# Eval("typeName") %> </li>
在生成的HTML代码中会有很多像 <li id="Repeater1_ctl04_item" 垃圾的HTML ID标记
========>
去掉runat="server"就没有了.
--------------------编程问答-------------------- 谢谢回复,
但是我却掉runat="server"怎么才给给li 加 class="current"这个呢 --------------------编程问答-------------------- <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<ul class="current">
<li> <%# Eval("typeName") %> </li>
</ul>
</ItemTemplate> --------------------编程问答--------------------
这样还不能控制当前li的显示方式啊 --------------------编程问答-------------------- --------------------编程问答-------------------- 有没有高手知道这个怎么弄啊。。 --------------------编程问答-------------------- 前台使用Literal 代替<li>
后台绑定事件
查找控件Literal
符合条件Literal的Text等于<li class="">
否则等于<li>
--------------------编程问答-------------------- 方法二,没测试不知道行否
后台写个方法判断比如返回bool类型
前台用调用方法,传递值为绑定值来比较 --------------------编程问答-------------------- 方法三:
就是不用Repeater
后台用字符串拼接,然后显示出来 --------------------编程问答-------------------- 后台写个方法,比如 public string GetClassName(string querstring)
前台页面上调用:
<li <%# GetClassName(Request.QueryString("TypeName"))%>><%# Eval("typeName") %></li>
--------------------编程问答-------------------- .aspx页面
<ul class="leftmenu">
<asp:Repeater ID="Repeater_LeftMenu" runat="server" OnItemCreated="Repeater_LeftMenu_ItemCreated">
<ItemTemplate>
<li><a href="<%#OperateText.GetLink("about.aspx","itemid="+Eval("ItemID"),Eval("ExternalLink")) %>" <%#current%>><%#Eval("ItemName") %></a></li>
</ItemTemplate>
</asp:Repeater>
</ul>
.aspx.cs页面
protected void Repeater_LeftMenu_ItemCreated(object sender, RepeaterItemEventArgs e)
{
current = "";
if (ItemID == Convert.ToString(DataBinder.Eval(e.Item.DataItem, "ItemID")))
{
current = " class=\"current\"";
}
}
在.aspx.cs页面顶部声明内部公共变量,protected string current,ItemID
剩下的就是你自己其它代码的实现了。 --------------------编程问答-------------------- 在后置代码中奖typeName声明为全局的变量
public string typeName = request.QueryString["typeName"];//protected也可以
并且添加一个用于判断的方法
public string Compare(string param){
if(typeName==param)
return "current";
return "";
}
然后在页面中
<ItemTemplate>
<li class="<%# this.Compare(Eval("typeName").ToString()) %>"><%# Eval("typeName") %></li>
</ItemTemplate>
--------------------编程问答-------------------- 也可以不用Repeater 放个 <asp:PlaceHolder ID="PlaceHolder1" runat="server"> </asp:PlaceHolder> 然后后台循环拼接html放里面就可以了 PlaceHolder 在前台不会生成多余代码 --------------------编程问答--------------------
坐着好难受。诶 没意识--------------------编程问答-------------------- 无聊逛逛
补充:.NET技术 , ASP.NET