Zellen im GridView deaktivieren

Saturday, November 03, 2007 1:41:07 PM (Mitteleuropäische Zeit, UTC+01:00)

In manchen Fällen ist es notwendig ein zum Beispiel einen Linkbutton im GridView zu deaktivieren. Dies kann der Fall sein, wenn ein bestimmter Datensatz nicht gelöscht werden darf:

GridView1

Dies kann im RowDataBound Event mit folgendem Code erreicht werden:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItem != null)
        {
            if (…) // Bedingung zum deaktivieren des Linkbuttons
                e.Row.Cells[0].Enabled = false; 
        }
    }

Dabei wird folgender HTML Code erzeugt:

<td disabled="disabled">
 <a onclick="return confirm('Wirklich Löschen?');" disabled="disabled" id="ctl00_CPH1_ GridView1_ctl10_LinkButton1" style="color:Red;">Löschen</a>
</td>

Dieser HTML Code wird vom IE7 sehr sinnvoll interpretiert, der Link wird ausgegraut wie im oberen Bild zu erkennen ist.
Wird die Seite mit dem Firefox aufgerufen, der das disabled Attribut anders auswertet, gibt’s eine böse Überraschung:

GridView2 

Der Link ist sichtbar und optisch von nicht gesperrten Links nicht zu unterscheiden. Man kann den Link anklicken, die JavaScript Sicherheitsabfrage wird angezeigt, aber der Eintrag wird nicht gelöscht weil der Firefox keinen Postback sendet.
Dieses Verhalten macht keinen Sinn und wird kein User akzeptieren.

Möchte man, das die Seite auf allen Browsern läuft, sollte folgender Code verwendet werden.

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.DataItem != null)
        {
            if (…) // Bedingung zum deaktivieren des Linkbuttons
                e.Row.Cells[0].Text = String.Empty;
        }
    }

So sind die deaktivierten Links zwar nicht mehr sichtbar aber die Lösung ist auf jeden Fall kundenfreundlicher.

GridView3

Folgender HTML Code wird dabei für die Zelle generiert:

<td></td>

Weiterführende  Informationen:
Elemante ausgrauen bei SelfHTML
"Wirlich Löschen?" im GridView

Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war,
bitte "kicken" sie ihn.

Kick it on dotnet-kicks.de


Comments are closed.