デモ サイトで利用できる Telerik テーマ機能に似た機能を実装したいと考えています。(私は彼らのコントロールの完全にライセンスされたコピーを持っています)が、これを行う方法に関する情報を見つけることができません.
私は MVC アプリケーションを持っており、_Layout.cshtml (私が知っているコントローラーがありません (私が間違っていることを願っています)) に、次のような使用可能なスタイルのリストが入力されたコンボ ボックスを追加しようとしています:
<section id="Login">
@if (Request.IsAuthenticated)
{
<section id="loginImage">
<img src="../../Content/Images/BlankPerson.jpg" />
</section>
<section id="loginText">
[ @Html.ActionLink("Log Off", "LogOff", "Account") ]
<br />
@User.Identity.Name!
@(
/* TELERIK COMBOBOX */
Html.Telerik().ComboBox()
.Name("cbxTheme")
.Placeholder("Select Theme...")
.SelectedIndex(0)
.ClientEvents(events => events.OnChange("cbxTheme_onChange"))
//.BindTo((IEnumerable<DropDownItem>)ViewData["Files"])
.Items(item =>
{
item.Add().Text("black");
item.Add().Text("common");
item.Add().Text("default");
item.Add().Text("forest");
item.Add().Text("hay");
item.Add().Text("metro");
item.Add().Text("office2007");
item.Add().Text("office2010black");
item.Add().Text("office2010blue");
item.Add().Text("office2010silver");
item.Add().Text("outlook");
item.Add().Text("rtl");
item.Add().Text("simple");
item.Add().Text("sitefinity");
item.Add().Text("sunset");
item.Add().Text("telerik");
item.Add().Text("transparent");
item.Add().Text("vista");
item.Add().Text("web20");
item.Add().Text("webblue");
item.Add().Text("windows7");
})
)
</section>
}
</section>
テレリックの指示通り。次のように、ビューの最初と最後に次の行を含める必要があります。
<head>
@(
Html.Telerik().StyleSheetRegistrar()
.DefaultGroup(group => group
.Add("telerik.common.css")
.Add("telerik.black.css").Combined(true).Compress(true)
.Add("telerik." + + ".css", ).Combined(true).Compress(true)
//.Add("telerik." + Html.GetCurrentTheme() + ".css").Combined(true).Compress(true)
//"javascript:cbxTheme_onChange()"
))
</head>
.
.
.
.
<body>
@(Html.Telerik().ScriptRegistrar().DefaultGroup(group => group.Combined(true).Compress(true)))
</body>
また、動作するJQueryが少しありますが、必要な方法でアクセスできません。これが私の問題です。
<script>
function cbxTheme_onChange()
{
var selectedItemText = $("#cbxTheme").data("tComboBox").text();
var selectedItemValue = $("#cbxTheme").data("tComboBox").value();
alert(selectedItemValue);
return selectedItemText;
}
</script>
上記の関数は実際に機能し、選択したアイテムを含むメッセージをポップアップ表示します。問題ありません。
私が抱えている問題は、上記のように head セクションの次のコード行にあります。
@(
Html.Telerik().StyleSheetRegistrar()
.DefaultGroup(group => group
.Add("telerik.common.css")
.Add("telerik.black.css").Combined(true).Compress(true)
.Add("telerik." + "SELECTED ITEM FROM COMBOBOX.TEXT HERE" + ".css", ).Combined(true).Compress(true)
//.Add("telerik." + Html.GetCurrentTheme() + ".css").Combined(true).Compress(true)
//"javascript:cbxTheme_onChange()"
))
「ここにcombobox.textから選択されたアイテム」と表示されているところに、javascript関数が文字列を配置する必要があります(これには、使用するテレリックスタイルシートの名前が含まれています。動作するはずですが、動作していません.
次のように言って、コンボボックスに直接対処しようとさえしました:
.Add("telerik." + cbxTheme.SelectedItem.text + ".css", ).Combined(true).Compress(true)
これは彼らのサイトで行われている方法です。しかし、やはりうまくいきません。
これに関するヘルプは大歓迎です。前もって感謝します。