如果我理解正确,您尝试为下拉列表选项应用一些样式。在这种情况下,您需要为下拉列表项目集合中的每个项目添加您的样式。您可以使用一些分隔符将项目样式存储在名称中,例如“;” “color:red; YourItem Name”(注意但我不认为这是个好主意)
foreach(ListItem item in ddl.Items)
{
string[] data=item.Text.Split(';');
item.Attributes.Add("style", data[0]);
item.Text=data[1];
}
例如,您可以在 Page_PreRender 上执行此操作。但是您必须小心,因为并非所有浏览器都正确支持标签选项的样式属性。
从服务器端删除不需要的 html 标签:
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"(<.+>)\b|(<\/.+>)");
foreach(ListItem item in ddl.Items)
{
item.Text=reg.Replace(item.Text," ");
}
您可以在数据源中进行此替换,但我不知道您使用的是哪种类型
如果您想使用 javascript 从客户端删除不需要的 html 标签:
使用 Jquery 的解决方案
function RemoveUnwantedHTMLTag()
{
$('select:[id*="elementSelectId"] > option').each(function(){var _self=$(this); _self.text(_self.text().replace(/<[^>]+>/g,' '));});
}
没有jQuery
function RemoveUnwantedHTMLTag()
{
var _arr=document.getElementById('elementSelectId').childNodes;
for (var i=0;i<_arr.length;i++)
{
if(_arr[i].text!=undefined)
{ _arr[i].text=(_arr[i].text).replace(/<[^>]+>/g,' ');
_arr[i].value=(_arr[i].value).replace(/<[^>]+>/g,' ');
}
}
}
在页面加载时启动您的 javascript 函数:
jQuery
$(documet).ready{RemoveUnwantedHTMLTag();}
没有jQuery
document.body.onload=function(){RemoveUnwantedHTMLTag();}
如果页面上存在 Sys 对象(如果您的下拉列表位于某个更新面板内,此方法很有用)
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(RemoveUnwantedHTMLTag);
cs文件中的所有代码:
protected void Page_PreRender(object sender, EventArgs e){
if (!this.Page.ClientScript.IsStartupScriptRegistered("RemoveUnwantedHTMLTag")
{
string script = @"function RemoveUnwantedHTMLTag()
{
var _arr=document.getElementById('"+ddlcategory.ClientID+"').childNodes;
for (var i=0;i<_arr.length;i++)
{ if(_arr[i].text!=undefined)
{ _arr[i].text=(_arr[i].text).replace(/<[^>]+>/g,' ');
_arr[i].value=(_arr[i].value).replace(/<[^>]+>/g,' ');// if text is same with value
}
}
}
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(RemoveUnwantedHTMLTag); ";
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "RemoveUnwantedHTMLTag", script, true);
}
}