#layer1 {
    width: 575px;
    height: 400px;
    background-color: #E0E0EB;
    position: absolute;
    top: 36px;
    left: 222px;
}

#layer2 {
    width: 575px;
    height: 400px;
    background-color: #E0E0EB;
    position: absolute;
    top: 36px;
    left: 222px;
    visibility:hidden;
}

И у меня есть некоторые элементы управления на обоих div ...

<asp:HyperLink ID="HyperLink1" runat="server" onclick="f1();" NavigateUrl="#">Add Personal Details</asp:HyperLink>
<asp:HyperLink ID="HyperLink1" runat="server" onclick="f2();" NavigateUrl="#">Add Personal Details</asp:HyperLink>

При нажатии на HyperLink у меня есть следующий код ...

function f1() {
    document.getElementById("layer1").style.visibility = "visible";
    document.getElementById("layer2").style.visibility = "hidden";
}

function f2() {
    document.getElementById("layer1").style.visibility = "hidden";
    document.getElementById("layer2").style.visibility = "visible";
}

И у меня есть кнопка ..

<asp:Button ID="Button5" runat="server" Text="Button" />

Все работает нормально, когда я нажимаю на HyperLink, но когда я НАЖИМАЮ на КНОПКУ, которая находится в div2 из-за возврата страницы, происходит сброс страницы и отображается div1. Что верно в соответствии с PostBack. Но я хочу, чтобы div2 отображался только после нажатия кнопки ftr. Может кто-нибудь предоставьте мне код для этого ... Пожалуйста, помогите ...

0
wsun31 20 Май 2014 в 16:02

3 ответа

Лучший ответ

Если вы пытаетесь запретить Button5 вызывать обратную передачу, добавьте в элемент управления onclientclick="return false;". В противном случае вы можете просто обработать видимость ваших div в обработчике события щелчка. Что-то вроде этого:

protected void Button5_Click(object sender, EventArgs e)
{
    div1.Style["display"] = "block";
    div2.Style["display"] = "none";
}

Чтобы получить доступ к вашим div в программном обеспечении, вам может потребоваться сделать их серверными элементами управления, добавив runat="server"

1
ovaltein 20 Май 2014 в 12:23

Я думаю, вы знаете, что происходит, когда происходит обратная передача, страница перезагружается. Итак, вам нужно обработать случай, когда при обратной передаче сохраняется старое значение (IsPostback)

0
Guanxi 20 Май 2014 в 12:17

Прошло некоторое время с тех пор, как я использовал asp, но начнем.

Вы можете хранить переменные в объекте Viewstate и проверять переменные при загрузке программы. Например

function f1() {
    document.getElementById("layer1").style.visibility = "visible";
    document.getElementById("layer2").style.visibility = "hidden";
    ViewState("layer") = "1"

}

function f2() {
    document.getElementById("layer1").style.visibility = "hidden";
    document.getElementById("layer2").style.visibility = "visible";
    ViewState("layer") = "2"

}

Когда вы загружаете страницу, вы делаете что-то похожее на это

String strLayer = ViewState("layer").ToString();

if(strLayer.equals("2"))
    f2();

Вы можете найти здесь дополнительную информацию, которая может помочь http://www.dotnetuncle.com/aspnet/75_viewstate.aspx

Надеюсь это поможет.

0
10bit 20 Май 2014 в 12:34