Frage

Ich habe einen Dropdownlist mit dem Autopostback auf true gesetzt. Ich will das Benutzer, um zu bestätigen, ob sie wirklich den Wert ändern möchten, die auf Post zurück feuert einen Server Side Event (SelectedIndexChanged).

Ich habe versucht, ein onchange Attribut Hinzufügen „return confirm (‚Bitte klicken Sie auf OK Ansonsten ändern auf Abbrechen.?‘;“), Aber es wird nicht unabhängig von der confirm Postback führen und der Wert in der Liste zurückkehrt nicht zurück, wenn Abbrechen ausgewählt.

Wenn ich das onchange Attribut aus dem Dropdownlist-Tag zu entfernen, die Seite Postback tut. Es ist nicht, wenn das onchange Attribut hinzugefügt wird. Muss ich immer noch den Event-Handler (ich bin auf C # .NET 2.0).

Draht

Jede Leitungen wird hilfreich sein.

Danke!

War es hilfreich?

Lösung

Haben Sie das onChange Ereignis auf eine Javascript-Funktion zu setzen versucht und dann innerhalb der Funktion des Javascript-Alarm anzuzeigen und die __doPostBack Funktion zu nutzen, wenn es passiert?

d.

   
drpControl.Attributes("onChange") = "DisplayConfirmation();"

function DisplayConfirmation() {
  if (confirm('Are you sure you want to do this?')) {
    __doPostback('drpControl','');
  }
}

Andere Tipps

Sie können die die CustomValidator Kontrolle „validieren“ Drop-Down nutzen, indem eine Javascript-Funktion aufrufen, in dem Sie die Bestätigungs tun ():

        <asp:DropDownList ID="TestDropDown" runat="server" AutoPostBack="true" CausesValidation="true"
            ValidationGroup="Group1"
            OnSelectedIndexChanged="TestDropDown_SelectedIndexChanged">
            <asp:ListItem Value="1" Text="One" />
            <asp:ListItem Value="2" Text="Two" />
        </asp:DropDownList>
       <script type="text/javascript">
            function ConfirmDropDownValueChange(source, arguments) {
                arguments.IsValid = confirm("Are you sure?");
            }
        </script>
        <asp:CustomValidator ID="ConfirmDropDownValidator" runat="server"
            ClientValidationFunction="ConfirmDropDownValueChange" Display="Dynamic" ValidationGroup="Group1"  />

Die folgenden Arbeiten, wenn die Dropdownlist auslöst partielle Postbacks:

// caching selected value at the time the control is clicked
MyDropDownList.Attributes.Add(
    "onclick",
    "this.currentvalue = this.value;");

// if the user chooses not to continue then restoring cached value and aborting by returning false
MyDropDownList.Attributes.Add(
    "onchange",
    "if (!confirm('Do you want to continue?')) {this.value = this.currentvalue; return false};");

Zur Zeit sind Sie immer das Ergebnis der confirm() Rückkehr, also auch wenn es true zurückkehrt, werden Sie noch Durchführung der Veranstaltung stoppen, bevor die Postbacks abfeuern kann. Ihre onchange sollte return false; nur, wenn die confirm() tut auch wie folgt aus:

if (!confirm('Please click OK to change. Otherwise click CANCEL?')) return false;

das Attribut onchange Aufschalten wird nicht funktionieren, wenn Sie haben Autopostback auf true gesetzt, weil ASP.NET das folgende an dem Ende Ihres Onchange Skript immer anhängen:

;setTimeout('__doPostBack(\'YourDropDown\',\'\')', 0)

Wenn Sie Autopostback auf false gesetzt, dann mit einem „bestätigen und __doPostBack“ Typ Skript überschrieben Onchange (siehe oben, err .. unten) wird funktionieren, aber Sie können manuell die __doPostBack Funktion erstellen müssen.

if (!confirm('Please click OK to change. Otherwise click CANCEL?')) return false;

Immer wieder so Dropdownlist der OnSelectedIndexChanged Ereignis ausgelöst wird, ob Benutzer auf OK oder Abbrechen klickt.

Stellen Sie sicher, dass Ihre Veranstaltung wird verdrahtet:

dropDown.SelectedIndexChanged += new EventHandler(dropDown_SelectedIndexChanged);

Sie können auch eine clientseitige Attribut gilt die Bestätigung zurückzusenden. Stellen Sie den Index entsprechend, wenn abgebrochen.

dropDown.Attributes.Add("onchange", "javascript: return confirm('confirmation msg')");
&lt;asp:DropDownList runat="server" ID="ddlShailendra"  AutoPostBack="True" OnSelectedIndexChanged="ddlShailendra_SelectedIndexChanged" onchange="javascript: { if(confirm('Click ok to prevent post back, Cancel to make a postback'))return true;} " &gt;
          &lt;asp:ListItem Text="tes" Value="1" >&lt;/asp:ListItem&gt;
            &lt;asp:ListItem Text="test" Value="-1"&gt;&lt;/asp:ListItem&gt;
            &lt;/asp:DropDownList&gt;

Schreiben Sie die Funktion inline und haben nicht eine „Rückkehr“ für den Zustand, in dem Sie einen Beitrag wollen zurück. Das funktioniert und ist gemäß den Standards.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top