0

すでに手動でデータバインディングしているドロップダウンリストがあります。現在、データを取得し、各アイテムをループして、アイテムの値に応じて、個々のListItemのcssを変更しています。

例えば:

foreach (Site mySite in myList)
        {
            ListItem li = new ListItem(mySite.FullAddress, mySite.Id.ToString());
            if (mySite.DisabledFlg)
            {
                li.Attributes.Add("style", "color:#999");
            }
            this.Items.Add(li);
        }

listitemのテキストを特定のポイントで強制的に中断しようとしています。データソースから取得した文字列には、現在、改行があるはずのすべての場所に「\ r\n」があります。これは通常のテキストボックスでの表示には問題なく機能しますが、listitemでは機能しません。「\r\ n」をに置き換えてみましたが、そうすると、残りのテキストと一緒にリストに"<br>"表示されるだけです。<br>listitemの内容をwidth属性でラップしようとしましたが、ListItemテキストに文字通りタグを"div"表示するだけです。"div"また、バインド時にListItem属性に次のものを追加してみました。

                li.Attributes.Add("width", "100px");

しかし、それでも変化はありません。

複数行のリストアイテムを含むカスタムドロップダウンリストコントロールを見てきました。同じ結果を得るにはどうすればよいですか?

4

2 に答える 2

3

これは不可能だと思います。DropDownList コントロールは<select>要素をレンダリングしますが、その子<option>要素が改行を持つように設計されていません。

ただし、同じ効果を得る別の方法は、DropDownList にバインドする前にデータを処理することです。改行を分割して、重複したアイテムに同じ DataValue を割り当てることができます。次のような HTML になります。

<select>
    <option value="A">A</option>
    <option value="A">A.2</option>
    <option value="B">B</option>
</select>

selectまた、ドロップダウン コントロールをシミュレートするが、プレーンな要素よりも柔軟な、いくつかの凝った Javascript コントロールまたはプラグインを見つけることができるかもしれません。

于 2010-02-01T17:13:32.557 に答える
2

独自のリスト項目として改行を追加する必要があると思います。次に、Javascript や検証を実行して、ユーザーがその「アイテム」を選択できないようにすることができます。

于 2010-02-01T17:13:41.417 に答える