我想编写一个涉及DropDownList
和TextBox
的自定义控件。
实际上,我想动态呈现DropDownList
和TextBox
。
例如:当用户点击Checkbox
时,Textbox
将更改为DropdownList
。另一方面,当用户取消选择Checkbox
时,Dropdownlist
将更改为Textbox
。
我知道这可以使用两个控件来完成,这两个控件设置两个控件的可见性。但是我可以在自定义控件上执行此操作吗?
答案 0 :(得分:1)
如果你仍然想采用这种方法,这是你的代码。
在设计文件中: -
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True"
oncheckedchanged="CheckBox1_CheckedChanged" />
<div id ="control" runat="server">
</div>
在文件背后的代码中: -
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TextBox txt = new TextBox();
txt.ID = "txt";
control.Controls.Add(txt);
}
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
if (CheckBox1.Checked)
{
for (int ix = this.Controls.Count - 1; ix >= 0; ix--)
if (this.Controls[ix] is TextBox) this.Controls[ix].Dispose();
DropDownList ddl = new DropDownList();
ddl.ID = "ddl";
control.Controls.Add(ddl);
}
else
{
for (int ix = this.Controls.Count - 1; ix >= 0; ix--)
if (this.Controls[ix] is DropDownList) this.Controls[ix].Dispose();
TextBox txt = new TextBox();
txt.ID = "txt";
control.Controls.Add(txt);
}
}
希望这就是你要找的东西。
答案 1 :(得分:0)
你可以试试这段代码
<强> ASPX 强>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="dynamicControl.ascx.cs" Inherits="dynamicControl" %>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"
oncheckedchanged="CheckBox1_CheckedChanged" />
<asp:DropDownList ID="DropDownList1" runat="server" visible="false">
</asp:DropDownList>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<强>代码隐藏强>
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
DropDownList1.Visible = CheckBox1.Checked;
TextBox1.Visible = !CheckBox1.Checked;
}
如果检查,则显示dropDownList >> >> >> 未选中。尽管这是可能的我不认为这是正确的方法。(例如:需要AutoPostBack,设置可见性......)
你想要达到什么目的?