Asp.net 可见性设置为false时出现的文本框和下拉列表

Asp.net 可见性设置为false时出现的文本框和下拉列表,asp.net,Asp.net,我们有一个页面,允许用户使用十几个文本框和几个下拉菜单更新数据。一半的字段是永久可见的,其余字段是隐藏的。如果选中复选框,页面将显示其余字段 当第一次到达页面时,两个文本框和相关下拉列表不可见,其他字段也不可见,除非选中复选框 但是,使用更新功能(单击按钮),两个文本框和下拉列表与其他永久可见字段一起出现。奇怪的是,应该隐藏的字段对应的标签没有出现。另一点是,如果选中复选框,然后取消选中,则相关字段不可见 因此,问题似乎出在更新功能上,但我们无法确定问题所在。我们已经尝试在.ascx.cs文件中

我们有一个页面,允许用户使用十几个文本框和几个下拉菜单更新数据。一半的字段是永久可见的,其余字段是隐藏的。如果选中复选框,页面将显示其余字段

当第一次到达页面时,两个文本框和相关下拉列表不可见,其他字段也不可见,除非选中复选框

但是,使用更新功能(单击按钮),两个文本框和下拉列表与其他永久可见字段一起出现。奇怪的是,应该隐藏的字段对应的标签没有出现。另一点是,如果选中复选框,然后取消选中,则相关字段不可见

因此,问题似乎出在更新功能上,但我们无法确定问题所在。我们已经尝试在.ascx.cs文件中将可见性设置为false,但这与我们尝试的其他方法一样没有任何效果

下面的代码中是否有明显的遗漏

ascx:


您可以尝试将代码移动到复选框的
CheckedChanged
事件。不过,这还不够。@wazz你能告诉我你还需要什么吗?
 <asp:FormView ID="FormView1" runat="server" DataSourceID="odsQWER" DataKeyNames="Oid"
    OnItemInserting="FormView1_ItemInserting" EnableModelValidation="true"
    OnItemUpdating="FormView1_ItemUpdating">
...
<tr>
    <td style="width: 200px">
        <asp:Label ID="ContactFNameLabel" runat="server" Text="Vendor Contact (First Name):"
            Visible="false"></asp:Label>
    </td>
    <td>
        <asp:TextBox Width="400px" ID="ContactFNameTextBox" runat="server" Text='<%# Bind("FirstName") %>'
            Visible="false"></asp:TextBox>
        <asp:RequiredFieldValidator ID="ContactFNameValidator" runat="server" ControlToValidate="ContactFNameTextBox"
            Display="Dynamic" ErrorMessage="Contact Name cannot be Blank" Visible="false"></asp:RequiredFieldValidator>
    </td>
</tr>
<tr>
    <td style="width: 200px">
        <asp:Label ID="ContactLNameLabel" runat="server" Text="Vendor Contact (Last Name):"
            Visible="false"></asp:Label>
    </td>
    <td>
        <asp:TextBox Width="400px" ID="ContactLNameTextBox" runat="server" Text='<%# Bind("LastName") %>'
            Visible="false"></asp:TextBox>
        <asp:RequiredFieldValidator ID="ContactLNameValidator" runat="server" ControlToValidate="ContactLNameTextBox"
            Display="Dynamic" ErrorMessage="Contact Last Name cannot be Blank" Visible="false"></asp:RequiredFieldValidator>
    </td>
</tr>
<tr>
    <td style="width: 200px">
        <asp:Label ID="CountryLabel" runat="server" Text="Country:" Visible="false"></asp:Label>
    </td>
    <td>
        <asp:DropDownList Width="405px" ID="CountryDropDownList" runat="server" AppendDataBoundItems="true"
            DataSourceID="odsCountry" DataTextField="Name" DataValueField="Oid" SelectedValue='<%# Bind("CountryId") %>'
            Visible="false">
            <asp:ListItem Selected="true" Text="&lt;--Select Here--&gt;" Value="0"></asp:ListItem>
        </asp:DropDownList>
        <asp:RequiredFieldValidator ID="CountryValidator" runat="server" ControlToValidate="CountryDropDownList"
            Display="Dynamic" ErrorMessage="Country Must be Selected" InitialValue="0"></asp:RequiredFieldValidator>
    </td>
</tr>
...
<asp:Button ID="UpdateButton" runat="server" CausesValidation="true" CommandName="Update" OnClick="btnUpdateClick"
    CssClass="button" Text="Update" Visible='<%# true %>' />
...
<asp:ObjectDataSource ID="odsQWER" runat="server" InsertMethod="AddRequest"
        TypeName="BLL.TESTRequest" SelectMethod="GetRequest" OnInserting="odsQWER_Inserting"
        UpdateMethod="UpdateRequest" OnUpdating="odsQWER_Updating" OnInserted="odsQWER_Inserted"
        OnUpdated="odsQWER_Updated" OldValuesParameterFormatString="{0}">
...
protected void btnUpdateClick(object sender, EventArgs e)
{
    CheckBox chk = (CheckBox)FormView1.FindControl("IsNewCheckBox");

    FormView1.FindControl("ContactFNameTextBox").Visible = chk.Checked;
    FormView1.FindControl("ContactFNameLabel").Visible = chk.Checked;
    FormView1.FindControl("ContactFNameValidator").Visible = chk.Checked;

    FormView1.FindControl("ContactLNameTextBox").Visible = chk.Checked;
    FormView1.FindControl("ContactLNameLabel").Visible = chk.Checked;
    FormView1.FindControl("ContactLNameValidator").Visible = chk.Checked;

    FormView1.FindControl("StateDropDownList").Visible = chk.Checked;
    FormView1.FindControl("StateLabel").Visible = chk.Checked;
}