0

と を含むカスタム コントロールを作成したいと考えてDropDownListTextBoxます。実際、私は動的にレンダリングDropDownListし たいTextBox. 例: ユーザーが をクリックするCheckboxと、Textboxは に変わりDropdownListます。一方、ユーザーが の選択を解除するCheckboxと、Dropdownlistは に変わりTextboxます。

これは、両方のコントロールの可視性を設定する 2 つのコントロールを使用して実行できることを知っています。しかし、カスタムコントロールでそれを行うことはできますか?

4

2 に答える 2

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);
    }
}

これがあなたが探していたものであることを願っています。

于 2012-09-18T08:53:42.410 に答える
0

You could try this code

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>

CodeBehind

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
    DropDownList1.Visible = CheckBox1.Checked;
    TextBox1.Visible = !CheckBox1.Checked;
}

This snippet will show a dropDownList if CheckBox is checked and change to TextBox if it's not checked. Despite this is possible I don't think this is the right approach. (eg: AutoPostBack needed, set visibility...)

What do you try to achieve?

于 2012-09-18T08:46:41.010 に答える