下拉列表由刷新页面后面的代码创建

时间:2014-07-17 07:17:46

标签: c# asp.net page-refresh runatserver ispostback

我正在尝试使用后面的代码创建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>

2 个答案:

答案 0 :(得分: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);
        }

答案 1 :(得分:1)

您首先将AutoPostBack设置为false,然后在两个声明之后立即设置为truefalse会覆盖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]);