Как показать div после постбэка по нажатию кнопки? - PullRequest
1 голос
/ 21 марта 2012

Здесь у меня есть div, в котором я показываю его во время наведения мыши на главной странице, и после наведения мыши в этом div появляются три ссылки href. После щелчка по этой ссылке href она переходит на другую страницу, происходит обратная передача иэтот div скрывается на главной странице. Мне нужно показать этот div и после этого клика. Я использовал updatepanel и пробовал его, но он все еще не работает. Вот мой код

// Div part

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="Update" runat="server">
<ContentTemplate>
<div runat="server" class="divSUBMenu" id="describe" style="width: 700px; height: 20px;
 font: Arial, Helvetica, sans-serif;" onclick="show(0)">
</div>
</ContentTemplate>
</asp:UpdatePanel>

// Onhover part

 <a href="#" onmouseover="showit(0)">
 <img src="Images/Analyze_over.jpg" name="image1" width="84" height="22" border="0"
 id="image1" alt="" /></a>

// Javascript для указателя мыши (работает нормально)

var submenu = new Array();
    submenu[0] = '&nbsp;<font style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><a style="color: #FFFFFF; text-decoration: none;" href="ATrendAnalysis.aspx">Trend Analysis</a> &nbsp;&nbsp; <a style="color: #FFFFFF; text-decoration: none;" href="AEventPerformance.aspx">Event Performance</a> &nbsp;&nbsp; <a style="color: #FFFFFF; text-decoration: none;" href="ACannibalization.aspx">Cannibalization</a> &nbsp;&nbsp; <a style="color: #FFFFFF; text-decoration: none;" href="AHaloEffect.aspx">Halo Effect</a> &nbsp;&nbsp; <a style="color: #FFFFFF; text-decoration: none;" href="AVolumeDecomposition.aspx">Volume Decomposition</a></font></span>';
        var delay_hide = 500;
        var menuobj = document.getElementById ? document.getElementById("describe") : document.all ? document.all.describe : document.layers ? document.dep1.document.dep2 : "";

        function showit(which) {
                clear_delayhide();
            document.getElementById("describe").style.visibility = 'visible';
            thecontent = (which == -1) ? "" : submenu[which];
            if (document.getElementById || document.all) {
                menuobj.innerHTML = thecontent;
            }
            else if (document.layers) {
                menuobj.document.write(thecontent);
                menuobj.document.close();
            }
        }

и, наконец, приведенная ниже часть не работает во время нажатияно это оповещение работает

function show(which) {
alert("test");
document.getElementById("describe").style.visibility = 'visible';
}

Любое предложение ??

РЕДАКТИРОВАТЬ: Это здесь я нажимаю

<a style="color: #FFFFFF; text-decoration: none;" href="ATrendAnalysis.aspx">Trend Analysis</a>

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Вы должны использовать ClientScriptManager

http://msdn.microsoft.com/en-us/library/3hc29e2a.aspx

Пример:

void Page_Load(object sender, EventArgs e)
{
    if(checkDisplayCount.Checked)
    {
        String scriptText = "";
        scriptText += "function DisplayCharCount(){";
        scriptText += "   spanCounter.innerText = " + 
            " document.forms[0].TextBox1.value.length";
        scriptText += "}";
        ClientScriptManager.RegisterClientScriptBlock(this.GetType(), 
           "CounterScript", scriptText, true);
        TextBox1.Attributes.Add("onkeyup", "DisplayCharCount()");
        LiteralControl spanLiteral = new 
            LiteralControl("<span id=\"spanCounter\"></span>");
        PlaceHolder1.Controls.Add(spanLiteral);
    }
}
0 голосов
/ 21 марта 2012

Поскольку для div установлено значение runat=server, вы можете управлять этим на стороне сервера - сначала установите describe.IsVisible = false и измените его на describe.IsVisible = true после щелчка.

Если для чего бы то ни былоПричина, по которой должно быть выполнено на клиенте из-за зависимости от других сценариев или чего-то еще, затем убедитесь, что вы ищете элемент управления, используя правильный идентификатор - это может быть,в зависимости от версии ASP.NET, которую вы используете, этому элементу управления предшествует ctl00_x.Фактически, даже в более новых версиях ASP.NET (выше .NET 3.5), я думаю, что UpdatePanel может явно изменять идентификаторы его элементов, используя префикс, чтобы отслеживать, что он содержит, не цитируйте меня об этом, хотя.Проверьте выводимый разметочный вывод на странице, чтобы проверить это.

...