Динамическое изменение ссылки на файл CSS
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Динамическое изменение ссылки на файл CSS Expand / Collapse
Автор
Сообщение
04.07.2006 17:39
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
Пользователь на web-форме выбирает из выпадающего списка название стилей. в зависимости от того какой элемент он выбрал, к текущей странице применяется соответствующий стиль. Т.е. фактически нужно имитировать изменение записи:
<LINK rel="stylesheet" type="text/css" href="pastel.css">
на
<LINK rel="stylesheet" type="text/css" modern.css">
в теле страницы.
Использую VS.net 2003 FCL 1.1
Как это сделать?
С уважением,
Сообщ. #900075
04.07.2006 17:48
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
На форуме ошибки, или я что-то делаю не так? Не добавляются/отображаются ссылки типа link href
Сообщ. #900078
05.07.2006 12:56
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Выводи имя таблицы стилей Response.Write-ом в зависимости от выбранного элемента. К примеру:

<link rel="stylesheet" type="text/css" href="<%
switch (dropdown1.SelectedIndex)
{
case 0:
Response.Write("modern.css");

default:
Response.Write("pastel.css");
}
%>">

Или сделай свойство у класса страницы которое хранит путь к файлу CSS и уже его выводи.

P.S. HTML теги у тебя не отображались потому, что форум их воспринял буквально. В таком случае советую заменять вручную < на &lt;, > на &gt; и все будет в порядке.

Сообщ. #900122
05.07.2006 13:37
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
Дорогой Bazile! Я уже сделал нечто подобное Вашему 1 варианту:

Private Sub Style_List_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Style_List.SelectedIndexChanged
Select Case Style_List.SelectedValue
Case "Модерн"
Page.Response.Write("<LINK href=""modern.css"" type=""text/css"" rel=""stylesheet"">")
Case "Пастель"
Page.Response.Write("<LINK href=""pastel.css"" type=""text/css"" rel=""stylesheet"">")
End Select
End Sub


Но было бы желательно, чтобы это событие срабатывало без перегрузки страницы (т.е. как я понимаю на стороне клиента).

Или сделай свойство у класса страницы, которое хранит путь к файлу CSS и уже его выводи.

А вот этого я не умею, можно пример?

Насчет P.S. все понял.

С уважением,
Сообщ. #900125
06.07.2006 13:41
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Пример, который я привел выше и так работает без post-back. Вот еще пример. Теперь с созданием свойства у страницы.

<script language="vb" runat="server">
Private _cssPath As String

Public ReadOnly Property CssPath As String
 Get
  Return _cssPath
 End Get
End Property

Sub Page_Load(Sender As Object, E As EventArgs)
 _cssPath = Style_List.SelectedItem.Text
End Sub
</script>

<link href="/css/<%=CssPath%>" rel="stylesheet" type="text/css">

<form runat="server">
<asp:DropDownList id="Style_List" autopostback="true" runat="server">
<asp:ListItem Selected="True" Value="1">modern.css</asp:ListItem>
<asp:ListItem Value="2">pastel.css</asp:ListItem>
</asp:DropDownList>
</form>

Сообщ. #900216
06.07.2006 14:28
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Пример можно упростить.

<script language="vb" runat="server">
Public ReadOnly Property CssPath As String
 Get
  Return Style_List.SelectedItem.Text
 End Get
End Property
</script>

<link href="/css/<%=CssPath%>" rel="stylesheet" type="text/css">

<form runat="server">
<asp:DropDownList id="Style_List" autopostback="true" runat="server">
<asp:ListItem Selected="True" Value="1">modern.css</asp:ListItem>
<asp:ListItem Value="2">pastel.css</asp:ListItem>
</asp:DropDownList>
</form>

Сообщ. #900221
08.07.2006 15:38
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 16.04.2008 11:44
Сообщ.: 366, Visits: 2 473
Спасибо! Тема закрыта!

С уважением,

Сообщ. #900336
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 6:30