C# ASP.NET控件回发后的类型更改
当用户从另一个DropDownList(ddlTypeDemande)中选择特定值时,我需要将DropDownList(ddlGouvPick)更改为TextBox(txtGouvPick)。 下面是描述我的案例的部分代码: ASPX页 调用操作的DropDownListC# ASP.NET控件回发后的类型更改,c#,asp.net,textbox,postback,autopostback,C#,Asp.net,Textbox,Postback,Autopostback,当用户从另一个DropDownList(ddlTypeDemande)中选择特定值时,我需要将DropDownList(ddlGouvPick)更改为TextBox(txtGouvPick)。 下面是描述我的案例的部分代码: ASPX页 调用操作的DropDownList <td> <asp:DropDownList ID="ddlTypeDemande" runat="server" CssClass="DDDropDown" AutoP
<td>
<asp:DropDownList
ID="ddlTypeDemande"
runat="server"
CssClass="DDDropDown"
AutoPostBack="True" OnSelectedIndexChanged="ddlTypeDemande_SelectedIndexChanged"></asp:DropDownList>
</td>
问题是当我从页面中的另一个控件调用回发时。我丢失了更改。最简单的方法是将textbox和dropdownlist控件添加到表单中,并使用它们的
Visible
属性,如下所示:
switch (ddlTypeDemande.SelectedValue)
{
case "I":
vartxtGouv_Liv = true;
ddlGouv_Colct.Visible = false;
break;
case "O":
vartxtGouv_Liv = false;
ddlGouv_Colct.Visible = true;
Export(); /*Change the type of another control*/
break;
}
因为你通常要添加这个控件,所以你必须在oninit页面中再次添加它。如果你不放置两个控件并将其中一个设置为隐藏,viewstate将保持该可见/隐藏值。
protected void ddlTypeDemande_SelectedIndexChanged(object sender, EventArgs e)
{
switch (ddlTypeDemande.SelectedValue)
{
case "I":
TextBox vartxtGouv_Liv = new TextBox();
tdGouvLiv.Controls.Remove(ddlGouv_Colct);
vartxtGouv_Liv.ID = "txtGouv_Liv";
vartxtGouv_Liv.CssClass = "DDTextBox";
vartxtGouv_Liv.Width = 200;
tdGouvLiv.Controls.Add(vartxtGouv_Liv);
break;
case "O":
Export(); /*Change the type of another control*/
break;
}
}
switch (ddlTypeDemande.SelectedValue)
{
case "I":
vartxtGouv_Liv = true;
ddlGouv_Colct.Visible = false;
break;
case "O":
vartxtGouv_Liv = false;
ddlGouv_Colct.Visible = true;
Export(); /*Change the type of another control*/
break;
}