【问题标题】:Create controls dynamically on button click在按钮单击时动态创建控件
【发布时间】:2018-06-17 03:11:26
【问题描述】:

我正在尝试在按钮单击时创建动态控件。

HTML:

<asp:LinkButton ID="lnkSrt" runat="server" Text="Multi Sort" ForeColor="Black" Font-Names="Calibri" Font-Size="10pt" />
<ajax:ModalPopupExtender runat="server" ID="mpeSrt"
 TargetControlID="lnkSrt" PopupControlID="pnlSrt" CancelControlID="btnClose">
 </ajax:ModalPopupExtender>
     <asp:UpdatePanel ID="upPanel" runat="server">
         <ContentTemplate>
              <asp:Panel ID="pnlSort" runat="server" align="center" Style="display: none" BackColor="LightGray">
              <asp:Label runat="server" Text="Sort By Column" />
              <asp:DropDownList ID="ddlColumnSort" runat="server" AutoPostBack="true" />
              <asp:Label runat="server" Text="Order By" />
              <asp:DropDownList ID="ddlOrder" runat="server" AutoPostBack="true">
              <asp:ListItem Text="Ascending" Value="0"></asp:ListItem>
              <asp:ListItem Text="Descending" Value="1"></asp:ListItem>
              </asp:DropDownList>
              <asp:LinkButton ID="lnkAdd" runat="server" Text="Add Sorting" Font-Underline="true" OnClick="lnkAddOrder_Click" Font-Names="Calibri" Font-Size="10pt" ForeColor="Black" />
              <asp:Button ID="btnSorting" runat="server" Text="Sort" OnClick="btnSorting_Click" />
              <asp:Button ID="btnClose" runat="server" Text="Close" />
            </asp:Panel>
         </ContentTemplate>
      </asp:UpdatePanel>

代码:

单击 AddSorting 时,我尝试使用以下代码创建下拉控件,但控件不显示。

protected void lnkAddSort_Click(object sender, EventArgs e)
{
    int index = pnlSort.Controls.OfType<DropDownList>().ToList().Count + 1;
    this.Createddl("ddldyn" + index);
}

public void Createddl(string id)
{
    DropDownList ddl = new DropDownList();
    ddl.ID = id;
    pnlSort.Controls.Add(ddl);
    Literal lt = new Literal();
    lt.Text = "<br />";
    pnlSort.Controls.Add(lt);
}

图片:

【问题讨论】:

    标签: c# asp.net .net c#-4.0 dynamic-controls


    【解决方案1】:

    pnlSrt 设置为display: none,因此动态添加的子控件也不会显示。

    【讨论】:

    • 现在可以使用了。当我第一次单击时,控件是可见的,如果我第二次单击该按钮,则不会添加第二个下拉菜单。用图像更新帖子以获得更好的清晰度。下拉列表也没有与第一行正确对齐。
    【解决方案2】:

    根据@Yoshi 的回答。您可以使用pnlSort.Style["display"] = "block";// or pnlSort.Attributes.Add("style", "display:block");pnlSrt 控件设置可见true

    试试这个

    public void Createddl(string id)
    {
        DropDownList ddl = new DropDownList();
        ddl.ID = id;
    
        pnlSort.Controls.Add(ddl);
    
        Literal lt = new Literal();
        lt.Text = "<br />";
        pnlSort.Controls.Add(lt);
        pnlSort.Attributes.Add("style", "display:block");
    }
    

    【讨论】:

    • 现在可以使用了。当我第一次单击时,控件是可见的,如果我第二次单击该按钮,则不会添加第二个下拉菜单。用图像更新帖子以获得更好的清晰度。下拉菜单也没有与第一行正确对齐。
    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多