0

ドロップダウンの選択されたインデックスが変更されたときにトリガーされる、ASP.NET の DropDownList の onSelectedIndexChange イベントがあります。

選択時に DropDown の SelectedIndex が変化しない場合に、同様の種類のイベントをトリガーする必要がある状況に遭遇しました。

このような場合はどうすればよいのでしょうか。

どんなヘルプ/リファレンスも高く評価されます。

ありがとうございました。

4

4 に答える 4

0

選択したインデックス変更イベントにイベントハンドラーを割り当て、autopostbackマークアップでtrueに設定します

またはコードビハインド

mydropdownlist.SelctedIndexChanged += NameOfMethod

ハンドラーは次のように定義されます

protected void NameOfMethod(object sender, EventArgs e)
{
     //your code here
}

定義により更新selectedindexchangedすると、イベントはインデックスが変更されたときにのみ発生します。javascriptを必要とするポストバックを強制したい場合。これはjqueryでそれを行う方法の例です

$(function() {
    $('select').change();
});
于 2012-10-01T10:25:44.607 に答える
0

それはかなり簡単です。これは、javascript / jquery /serverサイドコードなどを使用して実現できます。ユーザーコントロールをクリックすると仮定します。pageLoadでこのようなもの

PageLoad()
{
       YourDropDownList.Attributes.Add("onclick","javascript:CallHelloWorld();return false;");
}

次に、サーバー側でWebMethod属性を使用してメソッドを装飾できます

[WebMethod()]
public static string HelloWorld()
{
      return "Hello foo";
}

クライアント側のaspxでは、jQueryを使用してwebmethodを呼び出すことができます

<script language="text/javascript">
 function CallHelloWorld()
 {
     // Call HelloWorld webmethod using jQuery $.ajax
 }
 </script>

編集 ドロップダウンリストの代わりにラジオボタンリストを使用できます。そうすれば、クライアント側で、ラジオボタンがクリックされたときにイベントがチェックされているかどうかをチェックできます(チェックされている場合はイベントが発生します)。 編集 ドロップダウンリストを使用する場合は、このスレッドも参照してください。JQueryでドロップダウンリストが選択されるたびにイベントを発生させます。

于 2012-10-01T11:07:51.980 に答える
0

ポストバックを引き起こす別のサーバー側コントロールがページにあると仮定すると、現在の選択を前の選択と比較し、カスタム イベント (または必要なルーチン) を起動する他のコントロールのポストバック イベントにルーチンを記述することができます。値が変更されていない場合。

そうは言っても、達成しようとしている全体的な目標を達成するためのより簡単な方法があると想像する必要がありますが、質問はもう少し具体的にする必要があります。

アップデート

フォームを処理しているときに、ドロップダウンの値を使用していると想定する必要があります。ドロップダウンを非表示にし、リンクボタンを表示することから始めてみませんか? ドロップダウン リストからデフォルトを選択し、ユーザーが必要に応じて変更できるようにします。

その動作を示すフィドルは次のとおりです。http://jsfiddle.net/rjaum/

于 2012-10-01T10:33:04.767 に答える
0

それが普通だと思います。イベントはSelectedIndexChanged、以前に選択されたものと同じアイテムを選択したとおっしゃいました。したがって、インデックスは変更されずに同じままであり、イベントは発生しません。あなたはOnClickを見ているかもしれません。

問題は、2 回目にクリックしたときにインデックスを変更していないため、ドロップダウンが変更を待っていることです。

于 2012-10-01T10:34:32.440 に答える