0

我已经使用 JavaScript、ASP.NET 创建了一些下拉列表。

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

如果很难理解我的意思,请参阅“如何在 C# 中实现保管箱列表”。

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

我们假设所有<asp:DropDownList>列表元素都包含以下内容:method1、method2、method3 和 method4。如果用户选择了一个元素,代码隐藏中的一个方法就会被实现。

示例: 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 {
}

但此时我不知道哪个下拉列表先出现,以及应该首先对我的字符串执行哪种方法。

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

要获取下拉列表的顺序:

  1. 首先在aspx 页面中设置硬编码下拉列表的 ID/ClientID 并对它们进行计数(例如存在 2 个下拉列表)
  2. 在动态创建下拉列表时,在其 ID/ClientID 的末尾附加一个计数整数,如 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
    }
    ...
    
于 2012-04-11T14:25:37.687 回答
0

IMO 您的下拉列表将包含在父级中。

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

<div id="DropDownPlaceholder">

使用 linq 获取它的所有子节点。将它们投射为下拉列表,然后您可以循环它们以查找您的问题。

于 2012-04-11T13:29:10.480 回答