1

私は .net プログラミングが初めてで、おそらく私がやろうとしていることは比較的単純ですが、今まで有用な例を見つけることができませんでした。

アンカー要素を DropDownList に生成したいと考えています。asp.net に次のコードがあります。

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
</asp:DropDownList>

コード ビハインド (c#) では、データベースに問い合わせて (結果は URL、説明、およびタイトルを返します)、DropDownList に次のように入力します。

<a href="url">Title description</a>

次のように、データベースの結果を DropDownList に追加します。

while (reader){
    list.Add("<a href='" + url + "'> " + title +" "+  description+"</a>");
}
this.DropDownList1.DataSource = list;

this.DropDownList1.DataBind();

しかし、それは DropDownList に行全体を表示しています:

"<a href='" + url + "'> " + title +" "+  description+"</a>"

、URL、タイトル、説明が解釈され、アンカータグも表示されます。

表示したいのはタイトル説明のみ。選択すると、ユーザーを href 属性で示される URL にリダイレクトしたいと考えています。

asp.net と c# でこれを行うことは可能ですか? 誰かがいくつかの例やヒントを手伝ってくれますか?

4

2 に答える 2

0

ドロップダウンにアンカータグを持ち込もうとする代わりに、URLvalueOPTIONとして通常の select 要素を表示する必要があると思います。したがって、HTML マークアップは次のようになります。

<SELECT id="SomeSelect">
  <OPTION value="http://www.google.com">Google</OPTION>
  <OPTION value="http://www.aol.com">AOL</OPTION>
  <OPTION value="http://www.yahoo.com">Yahoo</OPTION>
</SELECT>

ここで、javascript を使用しchangeてドロップダウンのイベントをリッスンし、選択した項目のvalue属性の値を取得して、それを使用してナビゲートします。次のコード サンプルは、jQuery ライブラリがページに読み込まれていることを前提としています。

$(function(){

  $("#SomeSelect").change(function(e){
     var selectedUrl=$(this).val();
     window.location.href=selectedUrl;
  });

});
于 2013-08-19T20:28:40.873 に答える
0

ADropDownListは、あなたが求めていることを実際に行うようには設計されていません。コードを更新して、URL を のvalue属性にバインドしDropDownList、次に description/title をtext要素としてバインドすることをお勧めします。

例えば

while (reader){
    // read about the ListItem here http://msdn.microsoft.com/en-us/library/7f7h2h8h.aspx
    list.add(new ListItem(title + " " + description, url));
}

SelectedIndexChanged次に、イベント ハンドラーをコントロールに追加します。したがって、ページの読み込みに追加します。

this.DropDownList1.SelectedIndexChanged += DropDownList1_SelectedIndexChanged;

次に、これを処理するメソッドを作成します。

public void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){
    Response.Redirect(this.DropDownList1.SelectedValue);
}
于 2013-08-19T20:31:07.777 に答える