Как включить asp: LinkButton на стороне клиента - PullRequest
0 голосов
/ 26 мая 2011

У меня asp: LinkButton, кнопка ввода определена как:

<asp:LinkButton ID="lnkViewPdf" runat="server" CssClass="icoMiniTest" ClientIDMode="Static" >View Office Pdf</asp:LinkButton>   
<input id="Button2" type="button" value="TestEnable" onclick="TestEnable(document.getElementById('lnkViewPdf'));"  />

LinkButton изначально отключен в коде сзади как:

    if (!IsPostBack)
    {
        this.lnkViewPdf.Enabled = false;
    }

и должен быть включен, когда Button2нажата, поэтому я вызываю функцию javascript для включения ссылки следующим образом:

function TestEnable(lnkbutton) {
        alert('TestEnable() called');
        alert(lnkbutton.id);
        lnkbutton.disabled = "";
        //$("#lnkbutton").removeAttr('disabled');  //even this doesn't work
    }

Но я не могу включить кнопку ссылки.

Я что-то упустил?

Спасибо!

__ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __

Любой, кто заинтересован в решении вышеуказанной проблемы:
В коде позади:

this.lnkViewPdf.Attributes["disabled"] = "disabled";
this.lnkViewPdf.Attributes["onclick "] = "return false";

.js:

function TestEnable(lnkbutton) {
         $(lnkbutton).removeAttr('disabled');
        lnkbutton.onclick = "";    
}

ПРИМЕЧАНИЕ. При настройке lnkViewPdf.Включено = ложь;LinkButton отображался как

<a id="lnkViewPdf" class="aspNetDisabled icoMiniTest">View Office Pdf</a>

см. Класс стилей aspNetDisabled , что-то добавленное ASP.Net
Однако при установке атрибутов disabled / onclick из кода, как показано выше, отображается кнопка Linkbuttonкак:

<a id="lnkViewPdf" class="icoMiniTest" disabled="disabled" onclick ="return false" href="javascript:__doPostBack(&#39;lnkViewPdf&#39;,&#39;&#39;)">View Office Pdf</a> 

HTH.

Ответы [ 6 ]

1 голос
/ 30 ноября 2012
$("#<%=lnkViewPdf.ClientID %>").removeAttr("disabled");
1 голос
/ 26 мая 2011

В коде, а не отключить, установив Enabled = false, установите:

    lnkViewPdf.Attributes["disabled"] = "disabled"

Итак, ваша функция JavaScript:

    function TestEnable(lnkbutton) {
    alert('TestEnable() called');
    alert(lnkbutton.id);
    lnkbutton.disabled = "";
}

Ваша разметка:

    <asp:LinkButton ID="lnkViewPdf" runat="server" CssClass="icoMiniTest" ClientIDMode="Static" >View Office Pdf</asp:LinkButton>   
    <input id="Button2" type="button" value="TestEnable" onclick="TestEnable(document.getElementById('<%= lnkViewPdf.ClientID %>')); return false;"  />

И твой код:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            lnkViewPdf.Attributes["disabled"] = "disabled";
    }
1 голос
/ 26 мая 2011

Попробуйте сейчас ...

function TestEnable(lnkbutton) {
    lnkbutton.disabled = "";
    lnkbutton.onclick = "";
}
0 голосов
/ 26 мая 2011

Если вы отключите LinkButton с помощью:

if (!IsPostBack)
{
    this.lnkViewPdf.Enabled = false;
}

, тогда атрибут href не будет отображаться в HTML.Если вы вместо этого вручную добавите отключенный атрибут:

if (!IsPostBack)
{
    lnkViewPdf.Attributes.Add("disabled", "disabled");
}

Тогда ваш код будет работать нормально.

Ох! .. и еще одна вещь: Вам необходимо установитьсвойство PostBackUrl для LinkButton .Вы пропустили это в своем примере.

0 голосов
/ 26 мая 2011

попробуйте оба из них:

<input id="Button2" type="button" value="TestEnable"
    onclick="TestEnable(document.getElementById('<%= lnkViewPdf.ClientID %>'));"  />

или

$("#<%= lnkViewPdf.ClientID %>").removeAttr('disabled'); 

ОБНОВЛЕНИЕ: Поскольку вы отключаете LinkButton на стороне сервера .NET удаляетhref атрибут из элемента <a> html.Чтобы предотвратить потерю этой информации, вы должны отключить LinkButton на клиенте, а затем включить его, когда вам нужно.Также вместо того, чтобы отключить его, все, что вам нужно сделать, это удалить атрибут href.

Поэтому сначала вам нужно сохранить href и удалить его, чтобы ссылка <a> стала отключенной:

$(document).ready(function () {
    var $lnkViewPdf = $("#lnkViewPdf");

    $lnkViewPdf.data("href", $lnkViewPdf.attr("href"));
    $lnkViewPdf.removeAttr("href");
});

и функция, которая его включает:

function TestEnable(lnkViewPdfId) {
    var $lnkViewPdf = $("#" + lnkViewPdfId);

    $lnkViewPdf.attr("href", $lnkViewPdf.data("href"));
}
0 голосов
/ 26 мая 2011

Вам необходимо знать созданное имя .Net, чтобы выполнить его.Самый простой способ - установить его в начало страницы, если вы можете:

<script language="javascript">

var lnkbuttonToEnableId = "<%= this.lnkViewPdf.ClientId %>";

function TestEnable() {
        alert('TestEnable() called');
        lnkbuttonToEnableId.disabled = false;
}

</script>

Во всяком случае, единственный способ заставить его работать - это как-то передать ClientId lnkViewPdf в функцию.

...