Проблема с настройкой видимости div на странице aspx - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть div на странице checkout.aspx.Содержимое div выглядит следующим образом:

<div id="PaymentDetails" runat="server" style="text-align:center" visible="true">
    <asp:Label ID="PaymentDetailsLbl" Text="Payment Details:" runat="server" Font-Size="Large"></asp:Label>
    <br />
    <br />
    <br />
    <asp:Label ID="UNameLbl" Text="User Name:" runat="server"></asp:Label>
    &nbsp;
    <asp:Label ID="UNameTextLabel" runat="server" Width="150px"></asp:Label>
    <br />
    <br />
    <asp:Label ID="AmountLbl" Text="Amount:" runat="server"></asp:Label>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:Label ID="AmountTextLabel" runat="server" Width="50px"></asp:Label>
    <br />
    <br />
    <asp:Label ID="CCNumberLbl" Text="Credit Card No:" runat="server"></asp:Label>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    <asp:TextBox ID="CCNumberTBox" runat="server"></asp:TextBox>
    <br />
    <br />
    <br />
    <asp:Button ID="SubmitBtn" runat="server" Text="Submit" OnClick="SubmitBtn_Click" />
    <asp:Button ID="ResetBtn" runat="server" OnClick="ResetBtn_Click" Text="Reset" />
    <br />
    <br />
    <asp:Label runat="server" ID="SuccessMessageLabel" ForeColor="Red"></asp:Label>
    <asp:Button ID="SoftwareDownloadsBtn" runat="server" Text="Software Downloads" Visible="false"
        OnClick="SoftwareDownloadsBtn_Click" />
    <br />
    <br />
    <asp:RegularExpressionValidator ID="CCNumberValidator" ErrorMessage="Credit Card Number: Min 10 and max 16 digits, starts with 3 or 4"
        ControlToValidate="CCNumberTBox" runat="server"></asp:RegularExpressionValidator>
</div>

И я пытаюсь установить видимость div как false, когда пользователь не выбрал ни одного элемента или пользователь удалил все элементы из корзины для покупок, используя этокод:

 else if ((Session["SelectedRowItems"] == null) || (shoppingCartItems.Count == 0))
        {
            this.Page.FindControl("PaymentDetails").Visible = false;
            GridView1.EmptyDataText = "No Items Checked Out";
            GridView1.EmptyDataRowStyle.CssClass = "EmptyGridViewContent";
        }

Но я получаю следующую ошибку:

Ссылка на объект не установлена ​​на экземпляр объекта.

Подробный снимок экрана ошибки здесь

Кстати, я использую VS 2008, asp.net/C# и его проект веб-приложения

Пожалуйста, помогите мне.

Спасибо в ожидании

Ответы [ 2 ]

5 голосов
/ 03 апреля 2011

Использование FindControl() для поиска PaymentDetails работает только в том случае, если PaymentDetails является частью корневого контейнера. То есть он не будет рекурсивно искать элементы управления, являющиеся потомками других элементов управления.

Похоже, FindControl() возвращает ноль, и вы получаете ошибку при попытке вызвать метод на null.

FindControl() здесь не требуется. Просто используйте PaymentDetails.Visible = false.

0 голосов
/ 03 апреля 2011

Если ваш div не является ни дочерней страницей, ни пользовательским, ни главной страницей, вам не нужно использовать метод FindControl.Добавьте тег сервера runat и получите доступ к нему в коде файла, используя идентификатор.

apsx page:

<div id="myDiv" runt="server" >

// Your html

</div>

aspx.cs:
private void ShowHideDiv(bool status)
{
   myDiv.Visible = status;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...