0

私は 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>

私のデータソースは、2 つの列 (ID、名前) を持つテーブルです。名前にhtmltextを保存します。

例えば ​​:

ID名

1 コーヒースパン style="color: DarkOrange">A

2スパン style="background-color: LightSalmon">Hotel>

私の問題は次のとおりです。ドロップダウンデータソースにこのテーブルを使用すると、値が html タグで表示されます。

ここに画像の説明を入力

HTMLタグを削除するにはどうすればよいですか??

4

1 に答える 1

2

私があなたを正しく理解していれば、ドロップダウンリストのオプションに何らかのスタイルを適用しようとします。この場合、ドロップダウン リスト アイテム コレクション内のすべてのアイテムにスタイルを追加する必要があります。';' などのセパレータを使用して名前に保存できるアイテム スタイル "color:red; YourItem Name" (NB しかし、それは良い考えではないと思います)

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 関数を開始します。

Jクエリ

 $(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);
        }
}
于 2012-11-27T11:02:32.027 に答える