1

我正在尝试创建一个DDL使用代码的列表,如您在此处看到的:

public List<DropDownList> ddll = new List<DropDownList>();
for (int i = 0; i < 15; i++)
{
    DropDownList ansList = new DropDownList();
    ansList.AutoPostBack = false;
    ansList.DataSource = values1;
    ansList.DataBind();
    ddll.Add(ansList);
 }

如您所见,我将autopostback属性设置在false. 但是当用户更改selectedindex.

DDL使用这个添加:

Span1.Controls.Add(ddll[0]);
Span2.Controls.Add(ddll[1]);
Span3.Controls.Add(ddll[2]);
Span4.Controls.Add(ddll[3]);
Span5.Controls.Add(ddll[4]);
Span6.Controls.Add(ddll[5]);
Span7.Controls.Add(ddll[6]);
Span8.Controls.Add(ddll[7]);
Span9.Controls.Add(ddll[8]);
Span10.Controls.Add(ddll[9]);
Span11.Controls.Add(ddll[10]);
Span12.Controls.Add(ddll[11]);
Span13.Controls.Add(ddll[12]);
Span14.Controls.Add(ddll[13]);
Span15.Controls.Add(ddll[14]);

在 html 代码中我有这个:

<span style="color:#ea0000;padding:0 10px;" id="Span6" runat="server"></span>
4

2 回答 2

1

看你的代码

       for (int i = 0; i < 15; i++)
        {
            DropDownList ansList = new DropDownList();
            ansList.AutoPostBack = false; // Here You have set it false
            ansList.DataSource = values1;
            ansList.DataBind();
            ansList.AutoPostBack = true; // Here You have set it true again
            ddll.Add(ansList);
        }
于 2014-07-17T07:20:35.463 回答
1

您首先设置AutoPostBackfalse,然后true在两个语句之后立即设置。被false覆盖true,它现在应该在所选索引更改时进行回发。

ansList.AutoPostBack = false;
   //...    

ansList.AutoPostBack = true;

编辑您还可以使用循环在跨度中添加列表,使用FindControl(string id)通过 id 获取跨度。

for(int i=0; i < 15; i++)
   this.FindControl("Span"+i).Add(ddll[i]);
于 2014-07-17T07:20:46.963 回答