2016-06-08 3 views
0

Im Moment habe ich eine JavaScript-Eingabeaufforderung für meinen Löschbefehl in meinem Gridview wie so bestätigen:eine JavaScript-Eingabeaufforderung in ASP Gridview-Befehl löscht Verwenden Sie „Grund für die Löschung“ speichern

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton runat="server" 
      CommandName="Delete" 
      CausesValidation="False" 
      CssClass="adminLinks" 
      NavigateUrl="#" 
      Text="delete" 
      OnClientClick="return confirm('Are you sure you want to DELETE this record?');"/> 
    </ItemTemplate> 
</asp:TemplateField> 

Dann für meinen Löschbefehl, ich ist diesen Update Code ausgeführt wird:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:sqlConnection2 %>" 
    DeleteCommand="UPDATE [jeakins].[tbl_submit] SET recycle_bin=1 WHERE [ID] = @ID"> 
</asp:SqlDataSource> 

Wie kann ich das von einem confirm Feld zu einem Dialogfeld zu ändern, die fragt: ‚Grund für die Löschung?‘ und dann verwenden Sie diese Variable in DeleteCommand, um ein delete_reason Feld zu aktualisieren?

Antwort

1

Sie können eine confirmDelete Javascript-Funktion definieren, die das Eingabefeld anzeigt und speichert den Grund in einem Hidden, wenn der Benutzer OK klickt aber bricht das Löschen ab, wenn er Abbrechen klickt.

function confirmDelete() { 
    var reason = prompt('Why do you want to delete?', ''); 

    if (reason !== null) { 
     document.getElementById('hfDeleteReason').value = reason; 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

Die Hidden zum Markup hinzugefügt wird (außerhalb des Gridview) und confirmDelete wird durch die Linkbutton genannt:

<asp:HiddenField ID="hfDeleteReason" runat="server" ClientIDMode="Static" /> 

<asp:LinkButton runat="server" OnClientClick="return confirmDelete();" ... /> 

Wenn der Benutzer das Löschen bestätigt, können Sie den Grund aus dem Hidden abrufen in Code-Behind:

string reason = hfDeleteReason.Value; 

Sie müssen dann die DeleteCommand passen den Grund durch den Anwender eingegeben sind. Es könnte das delete_reason Feld mit der Verwendung eines zusätzlichen Parameter aktualisieren:

DeleteCommand="UPDATE [jeakins].[tbl_submit] SET recycle_bin=1, delete_reason = @Reason WHERE [ID] = @ID"> 
... 
<DeleteParameters> 
    <asp:Parameter Name="Reason" Type="String" DefaultValue="" /> 
</DeleteParameters> 

, die in Code-behind gesetzt würden:

SqlDataSource1.DeleteParameters["Reason"].DefaultValue = hfDeleteReason.Value; 
+0

Danke, sind Sie in der Lage, mir zu zeigen, wie Sie den DeleteCommand anpassen würden auch? – sayguh

+0

Ich habe Code für die Abfrage zum Löschen hinzugefügt. – ConnorsFan

Verwandte Themen