2012-04-11 22 views
0

我已经使用JavaScript,ASP.NET创建了一些下拉列表。如何获得动态创建的DropDownLists的顺序

用户可以通过单击“+”按钮添加尽可能多的下拉列表,并通过单击“ - ”按钮将其删除。

如果很难理解我的意思,请参阅“How to implement a list of dropboxes in C#”。

现在,我想后面的实现代码,并要定义下拉列表的顺序,但我不知道哪一个是我的第一个下拉列表等

我们假设所有<asp:DropDownList>包含列表元素的以下内容:方法1,方法2,方法3和方法4。如果用户选择一个元素,则实现代码隐藏中的方法。

举例: dropboxlist1:选择列表项的方法2,
dropboxlist2:选择列表项的方法1,
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 2012-04-11 13:22:17

+0

一些示例代码会非常有帮助!谢谢! – senna 2012-04-11 13:38:44

+0

非常好,从我+1。感谢您添加示例。 – jadarnel27 2012-04-11 14:31:38

0

IMO您的下拉列表将包含在父母身上。

让我们说(根据您的链接)您的父母是DropDownPlaceholder。

<div id="DropDownPlaceholder"> 

使用linq来获得它的所有孩子。将它们作为下拉列表投入,然后您可以循环查找您的问题。

+0

这不会工作,因为我改进的代码如下所示:

senna 2012-04-11 13:46:22

0

要获得dropdownlists的顺序:

  1. 首先设置硬编码dropdownlists的ID /的ClientID在aspx页面和 指望他们(比如2个dropdownlists存在)
  2. 在创建dropdownlists动态地在 附加一个计数整数,它们的ID/ClientIDs的结尾像ddl3,ddl4(从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 
    } 
    ...