当前位置:编程学习 > C#/ASP.NET >>

请老师看下如何给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>  --------------------编程问答--------------------
引用 3 楼 mt122 的回复:
<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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,