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

时间:2018-07-06 16:27:17

标签: asp.net

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

首次进入页面时,除非选中该复选框,否则两个文本框和所涉及的下拉列表均不可见,其余字段也不可见。

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

因此,看来问题出在更新功能上,但我们无法查明问题出在哪里。我们已经尝试在.ascx.cs文件中将可见性设置为false,但这与我们尝试过的其他措施一起都无效。

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

ascx:

 <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}">
...

aspx:

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

0 个答案:

没有答案