2009-08-18 13 views
0

Ich habe ein Problem mit einem modalen Popup-Extender. Was ich tun ist, es zu einem "versteckten" Button und auf die Klick-Methode einer anderen Taste zuweisen, ich rufe modal.Show(); Wenn die Aufgabe dahinter nichts oder kleine Operationen sind, funktioniert es gut. Das Problem ist, wenn ich eine gespeicherte Prozedur anrufe, wird das Modal überhaupt nicht angezeigt. Ich versuche Benutzerklicks zu verhindern und benachrichtige den Benutzer, dass ein Prozess ausgeführt wird (dh, er klickt auf eine Schaltfläche und benötigt einige Sekunden, um alle angeforderten Daten abzurufen).ASP.NET ModalPopupExtender Problem

Hat jemand schon mal davor gelitten? Oder hast du irgendwelche Tipps?

Vielen Dank im Voraus für jede Hilfe!

EDIT:

Heres einige Codebeispiele (wie gewünscht):

Die ASPX-Seite:

<asp:Button ID="btnStep1Hidden" runat="server" style="visibility: hidden;" /> 
    <asp:Button ID="Step1" Text="Pull ID Cards" OnClick="Step1_Click" UseSubmitBehavior="false" runat="server" CssClass="button_menu" /> 
    <ajax:ModalPopupExtender ID="mpeStep1" runat="server" PopupControlID="panProgress" TargetControlID="btnStep1Hidden" BackgroundCssClass="modalBackground"></ajax:ModalPopupExtender> 

Der aspx.cs Code:

mpeStep1.Show(); 

    try 
    { 
     SqlCommand cmd = APP.DataManager.GetConnection().CreateCommand(); 
     cmd.CommandText = "EXEC [dbo].[sp_Populate_Initial_DataSet_New]"   cmd.Connection.Open(); 
     cmd.ExecuteNonQuery(); 
     cmd.Connection.Close(); 
    } 
    catch 
    { 
     //Log, etc here 
    } 

Es sind keine .DataBinds() für diese gespeicherte Prozedur. Es füllt lediglich eine Tabelle, aus der andere Prozesse die Daten anzeigen.

+0

Wirklich kann Ihnen nicht helfen, ohne etwas Code zu sehen. – womp

+0

Einverstanden, ein Codebeispiel wird benötigt. Aus der vagen Beschreibung würde ich meinen, dass, wenn Sie eine gespeicherte Prozedur aufrufen, sie wirft, früh zurückkehrt oder aus irgendeinem anderen Grund nicht in die Zeile kommt, in der modal.Show() ausgeführt wird. Oder vielleicht machst du irgendwo eine Datenind(), die die Sichtbarkeit deines Popups zurücksetzt. Aber wir müssen etwas Code sehen, um es einzugrenzen. – Sterno

Antwort

0

Wird das modale Popup so etwas wie "Bitte warten, Verarbeitung ..." sagen? Sie müssen es auf der Client-Seite zeigen, anstatt mpeStep1.Show() zu benutzen, sonst wird es nicht zur Anzeige kommen, bis die serverseitigen Sachen sowieso fertig sind.

Verwenden Sie ASP.NET Ajax? Wenn ja, würde das UpdateProgress-Steuerelement nicht zur Aufgabe passen? http://msdn.microsoft.com/en-us/library/bb386421.aspx

+0

Ich dachte mir, das war das Problem, aber ich hatte gehofft, dass es einen Weg gab. Ich wollte die Seite "deaktivieren", während die längeren Operationen ausgeführt wurden, aber ich verwende einfach UpdateProgress wie es jetzt ist. Danke! – SlackerCoder

+0

Ich habe es nie selbst benutzt, aber das sollte die Rechnung gut für das, was Sie tun möchten, passen. http://encosia.com/downloads/postback-ritalin/ – Town