0

JavaScript、ASP.NET を使用していくつかのドロップダウン リストを作成しました。

ユーザーは、「+」ボタンをクリックして必要なだけドロップダウン リストを追加し、「-」ボタンをクリックしてドロップダウン リストを削除できます。

意味がわかりにくい場合は、「 C# でドロップボックスのリストを実装する方法」を参照してください。

そして今、コードビハインドを実装し、ドロップダウンリストの順序を定義したいのですが、どれが最初のドロップダウンリストなのかわかりません.

<asp:DropDownList>すべてのリスト要素に、method1、method2、method3、および method4 が含まれていると想定します。ユーザーが要素を選択すると、分離コードのメソッドが実装されます。

例: dropboxlist1: select list item method2,
dropboxlist2: select list item method1,
dropboxlist3: select list item method3,

string txt= "";
if (dropboxlistID.Text == "method1"){
  txt = method1Imp();
} else if (dropboxlistID.Text == "method2") {
  txt = method2Imp();
} else if (dropboxlistID.Text == "method3") {
  txt = method3Imp();
} else {
}

しかし、現時点では、どのドロップダウンリストが最初に来て、どのメソッドが最初に文字列で実行されるべきかわかりません。

4

3 に答える 3

2

各メソッドをデリゲートとしてキューに入れ、単一のスレッドから準備ができたらキューを排出 (各デリゲートを呼び出す) してみてください。これにより、実行の順序がユーザーの選択の順序と一致することが保証されます。

申し訳ありませんが、最初はコードを含めていませんでした。開始するための基本的な例を次に示します。

Queue<Func<string>> actions = new Queue<Func<string>>();
if(dropboxListID.Text =="m1")
{
 actions.Enqueue(method1Imp);
}
if(dropboxListID.Text = "m2")
{
 action.Enqueue(method2Imp);
}

...
Sometime Later when you're ready to process these
...
string txt = "";    
while(actions.Count >0)
{
 var method = actions.Dequeue();
 txt = method();
}

ワーク/タスク キューの概念をさらに掘り下げたブログ投稿を次に示します。

http://yacsharpblog.blogspot.com/2008/09/simple-task-queue.html

于 2012-04-11T13:14:56.093 に答える
0

IMOのドロップダウンリストは親に含まれます。

(あなたのリンクに従って)あなたの親がDropDownPlaceholderであるとしましょう。

<div id="DropDownPlaceholder">

linqを使用して、そのすべての子を取得します。それらをドロップダウンリストとしてキャストすると、それらをループして問題を見つけることができます。

于 2012-04-11T13:29:10.480 に答える
0

ドロップダウンリストの順序を取得するには:

  1. 最初にaspx ページでハードコーディングされたドロップダウン リストの ID/ClientID を設定し、それらをカウントします (2 つのドロップダウン リストが存在するとします)。
  2. ドロップダウンリストを動的に作成する際に、ddl3、ddl4 のように ID/ClientID の末尾にカウント整数を追加します (カウントは 3 から開始します)。
  3. 次に、コードで、選択した要素のドロップダウン リストを見つけることができます。

    if (ddl.ClientID.EndsWith("1")){
      // 1st ddl
    } else if (ddl.ClientID.EndsWith("2")) {
      // 2nd ddl
    } else if (ddl.ClientID.EndsWith("3")) {
      // 3rd ddl
    }
    ...
    
于 2012-04-11T14:25:37.687 に答える