我有一个下拉列表,通过一些js脚本增强。这个DropDownList位于UpdatePanel中,如下所示:
<asp:UpdatePanel ID="upStoreDetails" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:DropDownList ID="dropRestaurants" runat="server" CssClass="styleCB" AutoPostBack="true" OnSelectedIndexChanged="ddlTenant_SelectedIndexChanged">
</asp:DropDownList>
<uc:popuptenantdescription id="popupTenantDescriptionControl" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
我已经为它注册了脚本:
protected void Page_PreRender(object sender, EventArgs e)
{
loadJs();
}
private void loadJs()
{
Type cstype = this.GetType();
String scriptName = "cufon-yui";
if (!Page.ClientScript.IsClientScriptIncludeRegistered(cstype, scriptName))
{
Page.ClientScript.RegisterClientScriptInclude(this.Page.GetType(), scriptName, VirtualPathUtility.ToAbsolute("~/js/cufon-yui.js"));
}
}
在首次加载页面时成功插入。
但是,在回发(asp:dropDownList
的selectedIndexChanged事件)上,应用于下拉列表的样式将丢失......您是否看到了任何原因?
谢谢!
答案 0 :(得分:0)
我案中的解决方案:
但只是注册这个脚本(就像我上面所做的那样)也没有调用那些方法,只包含了那个js文件。
所以我不得不在doc时手动调用它们。就我的情况而言,就绪和IsPostBack:
private void loadJs()
{
Type cstype = this.GetType();
String csname = "applyStyleToDropDownList";
if (!Page.ClientScript.IsClientScriptBlockRegistered(cstype, csname))
{
StringBuilder cstext2 = new StringBuilder();
cstext2.Append("$(function(){ $('.styleCB').customStyle();})");
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), csname, cstext2.ToString(), true);
}
}
也许它对其他人也有用。