Хотите сделать видимость истинной со стороны клиента элемента управления, который стал невидимым со стороны сервера - PullRequest
3 голосов
/ 06 июня 2011

У меня есть текстовое поле на странице. Чья видимость установлена ​​как ложная со стороны сервера. Теперь я хочу сделать это видимым со стороны клиента, используя java-скрипт. (Любая публикация назад или частичная публикация назад не может быть реализована в этом случае.)

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head id="Head1" runat="server">
        <title>ControlVisibilityClientSide</title>
            <script type="text/javascript">
                function toggleVisibility(controlId)
                {
                    var control = document.getElementById(controlId);
                    if(control.style.visibility == "visible" || control.style.visibility == "")
                        control.style.visibility = "hidden";
                    else
                        control.style.visibility = "visible";
                }
            </script>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <input type="button" ID="btnShowHide" value="Show/Hide" onclick="toggleVisibility('TextBox1');" />
            </div>
        </form>
    </body>
</html>

Это нормально работает.

Но когда я использую

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox1.Visible = false;
    }
}

Приведенный выше код не работает вообще.

Может ли кто-нибудь помочь мне решить эту проблему, или мы будем благодарны за любые предложения.

Ответы [ 3 ]

7 голосов
/ 06 июня 2011

Если вы установите элемент управления visible=false, он не будет отображаться на стороне клиента, но есть хитрое решение, которое выполнит то же самое.

При загрузке вашей страницы, где вы установлены Visible=false, вы можете установить style на display:none

protected void Page_Load(object sender, EventArgs e)
{
   TextBox1.Attributes.Add("style", "display:none");
}

Он будет отображать элемент управления на стороне клиента, но пользователь не может видеть, а затем вы можете увидеть элемент управления в функции Javascript для установки style Diplay:block, НРАВИТСЯ ...

document.getElementById('<%=TextBox2.ClientID %>').style.display = 'block';
2 голосов
/ 06 июня 2011

Как только элемент управления помечен как невидимый на стороне сервера, для него не создается наценка (html).Таким образом, его нельзя сделать видимым в JS, поскольку он (соответствующий html) не существует на стороне клиента.

Вместо того, чтобы делать невидимым на стороне сервера, вам нужно создать сценарий запуска, чтобы скрыть его на клиентесторона.

0 голосов
/ 06 марта 2018

установить style["visibility"] = "hidden" на стороне сервера.IE в c # btnSave.style["visibility"] = "hidden"; Он будет отображать кнопку и, следовательно, на стороне клиента этот элемент доступен.На стороне клиента измените стиль видимости на видимый.

$('#btnSave).css("visibility", "visible");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...