2009-03-17 2 views
0

Ich habe eine Gridview, die eine Spalte hat, die derzeit eine "1" zurückgibt, wenn es eine Abmeldung gab, oder 0 wenn nicht. Ich möchte ein "Thumbs up" Bild zeigen, wenn der Wert 1 für jede Zeile ist, oder nichts wenn 0.Wie können Bilder in einer asp.net-Gridview dynamisch angezeigt werden?

Was ist die beste Methode dafür? Ich dachte daran, irgendwie das rowdatabound Ereignis zu verwenden, was ist der beste Weg, dies zu tun?

Danke,

Mark.

Antwort

2

Das rowdatabound Ereignis bietet Ihnen sicherlich die Möglichkeit, dies zu tun. Es ist ziemlich geradlinig und intuitiv zu tun. Und wie erwähnt, könnten Sie eine Template-Spalte verwenden. Ich würde wahrscheinlich verwenden nur entweder die Vorlage Spalte oder ein Bildfeld, dies zu verwalten:

<Columns> 
    <asp:ImageField HeaderText='Sign Off' 
     DataImageUrlField='<%# ThumbDisplay(Eval("SignOff")) %>' /> 
</Columns> 

Sie dann eine Methode, wie in Ihrem Code-Behind folgenden bräuchten:

protected string ThumbDisplay(int signoff) 
{ 
    return (signoff == 1) ? "~\thumbsup.png" : "~\thumbsdown.png"; 
} 

http://www.asp.net/learn/data-access/tutorial-12-cs.aspx hat gute Details zur Verwendung der Vorlagenspalte.

Die beste Methode ist wahrscheinlich diejenige, die zu Ihren anderen Anzeigeanforderungen passt. Müssen andere Spalten ähnlich massiert werden? Sie könnten besser in der Lage sein, alles auf einmal im rowdatabound-Event zu erledigen. Aber wenn es sich um die einzige Änderung an den Daten handelt, ist es wahrscheinlich am einfachsten, eine Vorlagenspalte oder die Bildspalte zu verwenden und die ganze Seite sauber zu halten.

2

Ein anderer Ansatz, der ziemlich flexibel ist, ist die Verwendung einer Template-Spalte. Das gibt dir viel Freiheit. Sie können beispielsweise den Wert Ihrer Spalte verwenden, um die Argumente in ein img-Tag umzuschalten (oder zwischen zwei img-Tags umzuschalten) und/oder Argumente für einen Link angeben.

Ich habe immer Template-Spalten ziemlich einfach gefunden.

1

Dies ist ein wenig chaotisch, aber es ist alles in der Vorlage Tag enthalten:

<ItemTemplate> 
    <img src='<%# (bool)Eval("signoff") ? "thumbsup" : "thumbsdown" %>.gif' alt="whatever" width="16" height="16" /> 
</ItemTemplate> 

hoffe, das hilft!

0

Danke Leute, ich habe es mit einer boundfield -> rowdatabound Lösung getan.

Ich hatte bereits datengebundene Event-Code passiert, also habe ich nur hinzugefügt. Ich habe dort ein Imagebutton-Steuerelement gesetzt und es sieht jetzt gut aus (etwas außerhalb der Mitte, aber ich denke, es ist besser als vorher).

Vielen Dank für die Vorschläge,

Mark.