2012-04-11 22 views
0

JavaScript、ASP.NETを使用していくつかのドロップダウンリストを作成しました。動的に作成されたDropDownListsの順序を取得する方法

ユーザーは、「+」ボタンをクリックして「 - 」ボタンをクリックすることで削除できるドロップダウンリストをいくつでも追加できます。

私が何を意味するのか分かりにくい場合は、How to implement a list of dropboxes in C#を参照してください。

そして今、私は背後にあるコードを実装し、ドロップダウンリストの順番を定義したいしたいのですが、私は、リストダウン私の最初のドロップなど私たちが想定し

である1かわかりませんすべて<asp:DropDownList>には、リスト要素の場合、method1、method2、method3およびmethod4が含まれています。ユーザが要素を選択すると、コードビヘイビア内のメソッドが実装されます。

例: dropboxlist1:選択リスト項目法2、
dropboxlist2:選択リスト項目のmethod1を、
dropboxlist3:選択リスト項目の法3、

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

しかし、この時点で私はすべてのアイデアを持っていませんどのドロップダウンリストが最初に来て、どのメソッドが自分の文字列で最初に実行されるべきかを示します。

答えて

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

+0

あなたはおそらくOPを始めるためにいくつかのサンプルコードを示すことによって、この答えを改善してもらえますか? – jadarnel27

+0

いくつかのコード例は本当に役に立ちます!ありがとう! – senna

+0

非常にいいです、私の+1。例を追加していただきありがとうございます。 – jadarnel27

0

はIMOダウンリストあなたのドロップが含まれることになります親で

あなたの親はDropDownPlaceholderです。

<div id="DropDownPlaceholder"> 

linqを使用してすべての子を取得します。それらをドロップダウンリストとしてキャストして、あなたの問題を見つけるためにそれらのループを繰り返します。

+0

私の洗練されたコードは、次のように見えるので、これは動作しません:

senna

0

dropdownlistsの順序を取得するには:

  1. まずdropdownlistsを作成中
  2. (たとえば2 dropdownlistsが存在している)それらを数えるaspxページでハードコードされたdropdownlistsのIDS /のClientIDを設定し、 を動的に、 にカウント整数を追加するddl3、ddl4(3からカウントを開始)のようなID/ClientIDsを追加する
  3. 次に、選択した要素のドロップダウンリストを見つけることができます:

    if (ddl.ClientID.EndsWith("1")){ 
        // 1st ddl 
    } else if (ddl.ClientID.EndsWith("2")) { 
        // 2nd ddl 
    } else if (ddl.ClientID.EndsWith("3")) { 
        // 3rd ddl 
    } 
    ...