ASP.NET GridView ItemTemplate
OK, ich habe ein GridView und es gibt eine Spalte, ich will einen link, wenn eine Datei vorhanden ist, sonst kann ich es nur will, ein Etikett. Jetzt bin ich die änderung der Steuerelemente auf RowDataBound Ereignishandler mit der Zeile übergeben args. Ich bin kein großer fan von diesem, wie ich bin, harte Codierung der Spalte ID, und wenn es jemals änderungen, die ich benötigen, um denken Sie daran, dies zu ändern code. Ich hatte gehofft, ich könnte tun, eine bedingte im asp-code, um einen link hinzufügen, wenn der Wert einer Eigenschaft nicht null ist, sonst fügen Sie ein label. Ist das möglich? Irgendwelche anderen Lösungen?
Ich würde gerne so etwas wie dieses:
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<%# if (Eval("LogFileName") == null)
<%#{
<asp:LinkButton ID="LogFileLink" runat="server" CommandArgument='<% #Eval("LogFileName") %>' CommandName="DownloadLogFile" Text='<%# Blah.NDQA.Core.Utilities.GetEnumerationDescription(typeof(Blah.NDQA.Core.BatchStatus), Eval("Status")) %>'>
<%# }
<%# else
<%#{
<asp:Label ID="LogFileLabel" runat="server"Text='<%# Blah.NDQA.Core.Utilities.GetEnumerationDescription(typeof(Blah.NDQA.Core.BatchStatus), Eval("Status")) %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
InformationsquelleAutor CSharpAtl | 2009-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du gehst zu tun eine Menge, ich schlage vor, das schreiben Ihrer eigenen Feld. Die einfachste Methode ist wahrscheinlich, um eine NullableHyperlinkField Erben von HyperlinkField und machen aus einem einfachen string-wenn der Anker und die URL sonst null.
InformationsquelleAutor Dave Roberts
Können Sie weiterhin verwenden RowDataBound-Ereignis, aber in Ihrer aspx-Sie hinzufügen:
In Ihrem C# - code so etwas wie:
In dieser Weise müssen Sie nicht zu hart zu Kodieren die Spalte ID
InformationsquelleAutor riotera
Ich weiß, das ist ein bisschen alt jetzt, aber nur im Fall, dass jemand stolpert über diese, wie ich Tat, als Suche nach einer Antwort auf eine ähnliche Frage, ich fand Sie etwas wie dieses:
d.h. legen Sie die Visible-Eigenschaft auf die Auswertung einer booleschen Ausdruck, der basierend auf dem Feld. Wenn Sie wollte etwas darstellen, anstatt der download-link oder eine Schaltfläche klicken, wie ein "Nicht verfügbar" - label, dann würden Sie genau stellen Sie seine Visible-Eigenschaft auf der gegenüberliegenden boolescher Ausdruck, auf Ihren download-link. (Dies ist VB.NET nicht C#, aber Sie bekommen die Idee.)
InformationsquelleAutor Jen
Verwenden Sie die Eigenschaften auf der Seite, um zu bestimmen, wenn Sie möchten, zeigen Sie die Beschriftung oder den link
Hinzufügen die Eigenschaften ShowLink und ShowLable, Ihren code hinter
InformationsquelleAutor cptScarlet