开发者

The footer CSS does not work when the page loads dynamic content at button click

.html

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="dark.css" rel="stylesheet" type="text/css" id="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    <asp:Label ID="CaptionLabel" runat="server"></asp:Label>
    <asp:TextBox ID="NumberTextbox" runat="server">(empty)</asp:TextBox>
    <asp:Button ID="SquareButton" runat="server" Text="Square" style="background-color:Blue; color:White;" />
    <asp:Label ID="ResultLabel" runat="server" Text="(empty)" CssClass="reverse"></asp:Label>
    <p>
        <asp:Label ID="Label1" runat="server" CssClass="footer1" 
            Text="Label Label Label Label LabelLabelLabel Label Label Label Label Label Label Label"></asp:Label>
    </p>
    <asp:RadioButton ID="radioDark" runat="server" AutoPostBack="True" 
        Checked="True" GroupName="grpSelectStylesheet" 
        oncheckedchanged="Switch开发者_运维百科Stylesheets" Text="Dark" />
    <br />
    <asp:RadioButton ID="radioLight" runat="server" AutoPostBack="True" 
        GroupName="grpSelectStylesheet" oncheckedchanged="SwitchStylesheets" 
        Text="Light" />
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
    </form>
    </body>
</html>

.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }
    protected void SwitchStylesheets(object sender, EventArgs e)
    {
        if (radioDark.Checked)
            stylesheet.Href = "dark.css";
        if (radioLight.Checked)
            stylesheet.Href = "light.css";

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

        int count=DateTime.Now.Second;
        for (int i = 0; i < count; i++)
        {//for
            Label q = new Label();
            q.ID = DateTime.Now.Second.ToString();

            q.Text = DateTime.Now.Second.ToString();
            string spacee = "<br />";
            Label space = new Label();
            space.Text = spacee;
            form1.Controls.Add(q);
            form1.Controls.Add(space);
        }//for
    }
}

When the button is clicked, it works as it should but the footer does not register the expansion of the page.


Your code is completely wrong. you cannot change the stylesheet like this for a control even if the autopostback is set to true.
UPDATE: Here's how you should do it:

1- Remove the .css reference from your page.
2- Add this method to your page:

  private void UpdateStylesheet(string filepath)  
  {  
     HtmlLink newStyleSheet = new HtmlLink();  
     newStyleSheet.Href = filepath;       
     newStyleSheet.Attributes.Add("type", "text/css");  
     newStyleSheet.Attributes.Add("rel", "stylesheet");  
     Page.Header.Controls.Add(newStyleSheet);  
 }  

3- Add this line to your page_load event:

UpdateStylesheet("dark.css");  

4- Handle the SwitchStylesheets like this:

 if (radioDark.Checked)  
        UpdateStylesheet("dark.css");   
    if (radioLight.Checked)  
        UpdateStylesheet("light.css");   
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜