2 Stimmen

asp.net Link-Schaltfläche Bild nicht sichtbar nach Postback

Ich habe eine Verknüpfungsschaltfläche mit einem Bild und einer Beschriftung darin. Nach dem Postback sind das Bild und die Beschriftung nicht sichtbar.

< 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>

Diese Verknüpfungsschaltfläche wird für den Import/Export von Daten verwendet. Ich habe ein Attribut auf Klick dieser Link-Schaltfläche (AddNewRunLinkButton) hinzugefügt, um einen Fortschrittsbalken mit Javascript - SetInterval Funktion anzuzeigen. Wenn ich dieses Attribut entferne, werden das Bild und die Beschriftung angezeigt, andernfalls wird nur der Link-Button angezeigt.

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
}

Gibt es Hilfe?

0 Stimmen

Siehe das obige Codeschnipsel ... in diesem Bild und Label ist nicht immer nach postback angezeigt

0 Stimmen

In diesem Code wird nicht einmal ein Bild angezeigt. Sie müssen uns wirklich etwas mehr geben, um weiterzukommen.

1 Stimmen

Der Einfachheit halber könnten Sie einfach kopieren/einfügen das Markup, Code-Behind und Javascript-Funktion? Oder zumindest die relevanten Teile.

0voto

Sani Singh Huttunen Punkte 22657

Da Ihre Codebeispiele nicht viel hergeben, poste ich etwas, von dem ich denke, dass es das sein könnte, was Sie zu tun versuchen.

Markup und 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.
}

Dadurch wird das Bild nicht "versteckt", zumindest nicht für mich.

Bemerkung:
Anstatt das OnClick-Ereignis im Code-Behind hinzuzufügen, können Sie es direkt im Markup hinzufügen, da es nicht dynamisch erstellt wird:

      <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>

0 Stimmen

Hallo Sani, Der Code ist mehr oder weniger ähnlich...mit Ausnahme der folgenden Unterschiede... 1. Ich verwende clearInterval nicht, da ich von 0 beginnen möchte, wenn die Breite 1000 erreicht. 2. Ich habe ein asp:label-Steuerelement nach Bild-Steuerelement ... die den Text als - "Add New Run" enthalten Wenn ich in die Ansicht-Quelle sah ... bin in der Lage, einen Anker-Tag anstelle von Link-Schaltfläche zu sehen ... und nno Bild und Label-Steuerelemente :(. Der Timer stoppt, wenn das Postback in meinem Fall passiert...nicht mit clearInterval..wird tat das Problem verursachen?

0 Stimmen

Könnten Sie die AddBlock-Javascript-Funktion veröffentlichen?

0 Stimmen

Function DisplayProgress(progressDiv) { var progressBar = document.getElementById("ProgressBar"); timerId = setInterval("addBlock('"+progressDiv+"')", 100); } function addBlock(progressDiv) { var progress = document.getElementById(progressDiv); progress.style. align = "left"; var width = parseInt(progress.style.width); if(width < 500) { progress.style.width=width+10+"px"; } else { progress.style.width="0px"; } progress.style.backgroundColor = 'blue'; progress.style.cssFloat = 'left'; progress.style.styleFloat = 'left'; }

0voto

sajoshi Punkte 2673

Ich würde Async-Aufruf verwenden, um den Fortschrittsbalken im Gegensatz zu dem, was Sie hier tun, anzuzeigen. Manchmal, wenn Sie sowohl clientseitige als auch serverseitige Ereignisse anhängen, funktioniert das Rendering der Seite nicht wie erwartet. In diesem Fall sind Sie mit einem Javascript-Timer mit SetInterval und ich glaube, dass die Tabelle zu verschwinden verursacht wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X