2009-04-04 5 views
2

Ich arbeite an einem Formular mit einem GridView, ziehen Daten aus einer SQL Express-Datenbank. Die letzte Spalte ist eine Schaltfläche, die ich basierend darauf, welche Daten an diese Spalte gebunden sind, ändern kann.Ändern der Eigenschaften einer ASP-Schaltfläche in Abhängigkeit von in GridView gebundenen Daten?

Die Schaltfläche fungiert als "Aktivieren/Deaktivieren". Grundsätzlich, wenn ein Benutzer aktiviert ist, möchte ich die Schaltfläche "Deaktivieren" sagen und die OnClientClick-Eigenschaft auf eine Sperrfunktion zeigen; Wenn der Benutzer deaktiviert ist, möchte ich, dass die Schaltfläche "Aktivieren" anzeigt und auf eine Aktivierungsfunktion zeigt.

Mein google-fu ist heute schwach, hoffend, dass Sie alle etwas Hilfe sein können. Danke im Voraus.

+0

Sie haben keine bearbeiten Sie Ihre Antwort wenn du eine Antwort bekommst. Eine Antwort als akzeptiert markieren ist alles was Sie tun müssen. – Samuel

Antwort

2

versuchen diese, ich nehme an, Ihr aktiviert/deaktiviert ein Bitwert in der DB ist

<asp:TemplateField> 
    <ItemTemplate> 
    <asp:Button runat="server" ID="btn" Text='<%# "1".Equals(Eval("Enabled").ToString()) ? "Enabled" : "Disabled" %>' OnClick='<%# "1".Equals(Eval("Enabled").ToString()) ? "DISABLE_METHOD" : "ENABLE_METHOD" %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 
+0

müssen Sie dem Befehlsargument für diese Situation weiterhin die ID des Benutzers bereitstellen. und dann das gesamte Gitter nach der Verarbeitung erneut binden. –

1

Verwenden Sie das OnRowDatabound-Ereignis (unter der Annahme von .net 2.0 aufwärts) als Ihren Startpunkt. Sie haben dann Zugriff auf die Zeilendaten für die Zeile und können Ihre Schaltfläche nach Bedarf ändern. Ich werde sehen, ob ich ein konkretes Beispiel für dich ausgraben kann.

2

haben den Text „aktiviert/deaktiviert“ in dem Datensatz, um das Raster zu binden, wobei verwendet wird.

Dann eine Vorlagenspalte verwendet wird, definieren Sie die Taste so:

<asp:button text='<%# Eval("IsEnabled") %>' runat=server commandname='<%# Eval("IsEnabled") %>' commandargument ='<%# Eval("UserId") %>' id="myButton" /> 

dann auf der RowCommand Veranstaltung Gitter, dies tun:

dim btn as button = e.item.findcontrol("myButton") 
select case e.Command 
    case "Enable" 
    myDisableFunction(e.commandargument) 
    btn.Text = 'Disable' 
    btn.Cmmand = 'Disable' 
    case "Disable" 
    myEnableFunction(e.commandArgument) 
    btn.Text = "Enable" 
    btn.Commandname="Enable" 
end case 
+0

+ 1- Ich wette IsEnabled ist ein bisschen in der DB, Sie möchten möglicherweise Ihre CommandName-Logik wiederholen –

+0

@rm - Ich habe angegeben, TEXT aus dem Datensatz aus diesem bestimmten Grund zurückzugeben. Das Ändern des Bits in eine Zeichenfolge kann in SQL über: CASE erfolgen, wenn IsEnabled = 1 THEN 'deaktivieren' ELSE 'Enable' END AS IsEnabled. Dies ist auch schneller als eine IF-Anweisung im Code. –

Verwandte Themen