-1

我是一个尝试建立电子商务网站的菜鸟。我用来显示页码的寻呼机控件使用了一个中继器,它看起来很乏味。谁能告诉我如何以编程方式更改用户选择的页码的背景颜色?或者以编程方式将其连接到执行此操作的 CSS 样式表代码块。示例:将数字后面的颜色更改为带有黑色边框的橙色方块。谢谢。

当前代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Pager.ascx.cs" Inherits="UserControls_Pager" %> 
<p> Page <asp:Label ID="currentPageLabel" runat="server" /> 
    of <asp:Label ID="howManyPagesLabel" runat="server" /> | 
   <asp:HyperLink ID="previousLink" Runat="server">Previous</asp:HyperLink> 
   <asp:Repeater ID="pagesRepeater" runat="server"> 
      <ItemTemplate> 
         <asp:HyperLink ID="hyperlink" runat="server" Text='<%# Eval("Page") %>' 
           NavigateUrl='<%# Eval("Url") %>' /> 
      </ItemTemplate>
   </asp:Repeater> 
   <asp:HyperLink ID="nextLink" Runat="server">Next</asp:HyperLink> 
</p>
4

2 回答 2

1

用户控件 ASPX:

 <p> Page <asp:Label ID="currentPageLabel" runat="server" /> of   
 <asp:Label ID="howManyPagesLabel" runat="server" /> | 
 <asp:HyperLink ID="previousLink" Runat="server">Previous</asp:HyperLink> 
 <asp:Repeater ID="pagesRepeater" runat="server" 
        onitemdatabound="pagesRepeater_ItemDataBound"> <ItemTemplate>   
 <asp:HyperLink ID="hyperlink" runat="server" Text='<%# Eval("Page") %>'   
    NavigateUrl='<%# Eval("Url") %>' /> </ItemTemplate> 
 </asp:Repeater>  
 <asp:HyperLink ID="nextLink" Runat="server">Next</asp:HyperLink> </p>

UserControl 后面的代码:

public class p
{
    public string Page { get; set; }
    public string Url { get; set; }
    public p(string url, string page)
    {
        Page = page;
        Url = url;
    }
}
protected void Page_Load(object sender, EventArgs e)
{
    List<p> arr = new List<p>();
    arr.Add(new p("a.aspx", "a"));
    arr.Add(new p("b.aspx", "b"));
    pagesRepeater.DataSource = arr;
    pagesRepeater.DataBind();
}

protected void pagesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    HyperLink lnk = (HyperLink)e.Item.FindControl("hyperlink");
    string[] URL = Request.Url.Segments;
    string currentUrl = URL[URL.Length - 1];
    if (lnk != null)
    {
        string lnkUrl=lnk.NavigateUrl;
        if (lnkUrl == currentUrl)
        {
            lnk.BackColor = Color.Orange;
            lnk.Style.Add("border", "1px solid #000000");
            lnk.Style.Add("background-color", "orange");
            lnk.Style.Add("text-decoration", "none");
        }
    }
}
于 2013-09-02T03:58:54.863 回答
0

您可以通过客户端 Jquery 执行此操作,例如,如果您要着色的控件具有 ID“MyControl”

                          $("#MyControl").css( "color", "red" ),  

您不必从后面的代码中更改它。

在您的页面准备好的文档中调用此代码,如下所示:

                          <script>
                            $(document).ready(function() {
                            $("#MyControl").css( "color", "red" )
                                                          });
                          </script>

请记住,将您的脚本代码放在页面末尾总是更好,因为它可以使您的页面运行得更快。

于 2013-09-02T04:26:20.430 回答