我有一个DropDownList并为它设置了一个DataSource。
HTML:
<asp:DropDownList ID="ddlcategory" runat="server" DataSourceID="ODScategory" DataTextField="Name" DataValueField="ID" Width="200px">
</asp:DropDownList>
<asp:ObjectDataSource ID="ODScategory" runat="server" SelectMethod="GetAllByCommand"TypeName="Alian.BusinessLayer.clsCustomerCategoryFactory">
<SelectParameters>
<asp:Parameter DefaultValue="FatherID is not null" Name="SQLWhere" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
我的数据源是一个包含两列(ID,Name)的表。我在名称中保存了htmltext。
例如:
ID名称
1 Cofee span style =&#34; color:DarkOrange&#34;&gt; A
2 span style =&#34; background-color:LightSalmon&#34;&gt; Hotel&gt;
我的问题是:当我将此表用于dropdowndatasource时,我的值显示为html标记。
如何删除html标签??
答案 0 :(得分:2)
如果我理解正确,您会尝试为您的下拉列表选项应用某种样式。 在这种情况下,您需要为下拉列表项集合中的每个项添加样式。 您可以使用某些分隔符存储名称的项目样式,例如';' “颜色:红色;你的名字”(N.B.但我不认为这是个好主意)
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);
}
}