【问题标题】:Generate multiple DropDownLists生成多个 DropDownLists
【发布时间】:2011-03-25 19:50:16
【问题描述】:

我必须在 clientclick 上生成多个下拉列表。 这是每次客户点击时的新下拉列表。 我放置了一个按钮,并在点击事件上编写了代码。

protected void addReq1_Click(object sender, ImageClickEventArgs e)

{
    DropDownList oDdl = new DropDownList();
    oDdl.ID = "ddlReq" + (++i).ToString();
    oDdl.DataSourceID = "DSUsers";
    oDdl.DataTextField = "UName";
    oDdl.DataValueField = "UName";        
    HtmlTableCell tc0 = new HtmlTableCell();
    HtmlTableCell tc1 = new HtmlTableCell();
    HtmlTableCell tc2 = new HtmlTableCell();
    HtmlTableCell tc3 = new HtmlTableCell();
    tc2.Controls.Add(oDdl);
    HtmlTableRow tr = new HtmlTableRow();
    tr.Cells.Add(tc0);
    tr.Cells.Add(tc1);
    tr.Cells.Add(tc2);
    tr.Cells.Add(tc3);
    search2.Rows.Add(tr);
}

这里的“DSUsers”是 SqlDataSource。

“i”是静态变量。

"serarch2" 是带有 runat server 标签的 html 表格

问题是只有一个控件正在渲染, 之后,在每次额外点击时,相同的 DropDownList 都会被替换。 页面中没有添加新的 DropDownList。

谢谢。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    当您向页面动态添加任何控件时,它们会在下一次回发时丢失。为了使其工作,您需要在 PreInit 或 Init 事件中测试 i 并在那里创建正确的行数。

    for (int x = 0 to i) {
        DropDownList oDdl = new DropDownList(); 
        oDdl.ID = "ddlReq" + (++x).ToString(); 
        oDdl.DataSourceID = "DSUsers"; 
        oDdl.DataTextField = "UName"; 
        oDdl.DataValueField = "UName";         
        HtmlTableCell tc0 = new HtmlTableCell(); 
        HtmlTableCell tc1 = new HtmlTableCell(); 
        HtmlTableCell tc2 = new HtmlTableCell(); 
        HtmlTableCell tc3 = new HtmlTableCell(); 
        tc2.Controls.Add(oDdl); 
        HtmlTableRow tr = new HtmlTableRow(); 
        tr.Cells.Add(tc0); 
        tr.Cells.Add(tc1); 
        tr.Cells.Add(tc2); 
        tr.Cells.Add(tc3); 
        search2.Rows.Add(tr); 
    }
    

    ASP.NET page lifecycle 的必填链接。

    【讨论】:

    • 谢谢 Jason,在这里我在生成新的 ddl 后丢失了先前 ddl(dropdownlist) 中的选定值,可能每次我们重新创建以前的 ddl 时都在这里。但是如何克服这个问题。
    • 将上述代码移至 Init 或 PreInit 事件,按此链接:stackoverflow.com/questions/3019760/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 2015-11-18
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2021-03-19
    • 2012-01-03
    相关资源
    最近更新 更多