我使用JavaScript,ASP.NET创建了一些下拉列表。
用户可以通过单击“+”按钮添加任意数量的下拉列表,然后单击“ - ”按钮将其删除。
如果很难理解我的意思请参阅“How to implement a list of dropboxes in C#”。
现在我想实现后面的代码,并希望定义下拉列表的顺序,但我不知道哪一个是我的第一个下拉列表等。
我们假设所有<asp:DropDownList>
包含以下列表元素:method1,method2,method3和method4。如果用户选择元素,则实现代码隐藏中的方法。
实施例:
dropboxlist1:选择列表项method2,
dropboxlist2:选择列表项method1,
dropboxlist3:选择列表项method3,
string txt= "";
if (dropboxlistID.Text == "method1"){
txt = method1Imp();
} else if (dropboxlistID.Text == "method2") {
txt = method2Imp();
} else if (dropboxlistID.Text == "method3") {
txt = method3Imp();
} else {
}
但此时此刻我不知道哪个下拉列表首先出现,哪个方法应首先在我的字符串上执行。
答案 0 :(得分: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
答案 1 :(得分:0)
IMO您的下拉列表将包含在父级中。
让我们说(根据您的链接)您的父母是DropDownPlaceholder。
<div id="DropDownPlaceholder">
使用linq获取所有孩子。将它们作为下拉列表投射,然后您可以循环查找它们。
答案 2 :(得分:0)
获取下拉列表的顺序:
然后在您的代码中,您可以找到所选元素的下拉列表:
if (ddl.ClientID.EndsWith("1")){
// 1st ddl
} else if (ddl.ClientID.EndsWith("2")) {
// 2nd ddl
} else if (ddl.ClientID.EndsWith("3")) {
// 3rd ddl
}
...