Изображение кнопки asp.net Link не отображается после обратной передачи - PullRequest
2 голосов
/ 25 января 2010

У меня есть кнопка ссылки с изображением и надписью внутри. После обратной передачи изображение и метка не видны.

< asp:LinkButton ID="AddNewRunLinkButton" runat="server" CssClass="Navigationlocalnav"
OnClick="AddNewRunLinkButton_Click" >
&nbsp;
  < img id="Img1" src="../../Images/add_newIcon.gif" runat="server" alt="Add New Run" />
  < asp:Label ID="addText" Text=" Add New Run" runat="server"></asp:Label>
< /asp:LinkButton>

Эта кнопка ссылки используется для импорта / экспорта данных. Я добавил атрибут при нажатии этой кнопки ссылки (AddNewRunLinkButton) для отображения индикатора выполнения с помощью функции javascript - SetInterval. Если я удаляю этот атрибут, изображение и метка отображаются, в противном случае отображается только кнопка ссылки.

AddNewRunLinkButton.attributes.add("onclick","javascript:DisplayProgress()");

function DisplayProgress()
{
  timeid = setInterval("addBlock",100)
}

function Addblock()
{
 // Display a progress bar as follows - Increase the width of a div tag at this interval
}

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2011

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

0 голосов
/ 25 января 2010

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

Разметка и Javascript:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>Untitled Page</title>
  <script language="javascript" type="text/javascript">
    var timeID = null;
    var width = 0;

    function DisplayProgress() {
      timeID = setInterval('AddBlock();', 100);
    }

    function AddBlock() {
      var p = document.getElementById("progressDiv");
      if (width < 1000) {
        width += 100;
        p.style.width = width + "px";
      }
      else
        timeID = clearInterval(timeID);
      }
  </script>
</head>
<body>
  <form id="form1" runat="server">
    <div>
      <asp:LinkButton runat="server" ID="lbAddNewRun" OnClick="lbAddNewRun_Click">
        <img src="--url to an image--" alt="Add New Run" />
        Add New Run
      </asp:LinkButton>
    </div>
    <div id="progressDiv" style="background-color: Green; width: 0px; height: 20px;"></div>
  </form>
</body>
</html>

Code-Behind:

protected void Page_Load(object sender, EventArgs e)
{
  lbAddNewRun.Attributes.Add("OnClick", "javascript:DisplayProgress();");
}

protected void lbAddNewRun_Click(object sender, EventArgs e)
{
  // Export/Import code.
}

Это не «скрывает» изображение, по крайней мере для меня.

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

      <asp:LinkButton runat="server" ID="lbAddNewRun" OnClick="lbAddNewRun_Click" OnClientClick="DisplayProgress();">
        <img src="--url to an image--" alt="Add New Run" />
        Add New Run
      </asp:LinkButton>
...