Binden NameValueCollection zu GridView?
Welche Art von Sammlung, die ich verwenden sollten, um zu konvertieren NameValue collection gebunden werden, um GridView?
Wenn dabei direkt hat es nicht funktioniert.
Code in aspx.cs
private void BindList(NameValueCollection nvpList)
{
resultGV.DataSource = list;
resultGV.DataBind();
}
Code in der aspx -
<asp:GridView ID="resultGV" runat="server" AutoGenerateColumns="False" Width="100%">
<Columns>
<asp:BoundField DataField="Key" HeaderText="Key" />
<asp:BoundField DataField="Value" HeaderText="Value" />
</Columns>
</asp:GridView>
Jeden Tipp sehr willkommen. Danke. X.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie verwenden Dictionary<string,string> anstelle der NameValueCollection. Da Dictionary<T,T> die IEnumerable implementiert, Sie könnte verwenden Sie LINQ-wie so:
[EDIT] Tatsächlich, Sie können das Wörterbuch direkt als:
Wenn es keine anzeigen mit Schlüssel/Wert-die Art und Weise Sie möchten, können Sie immer gehen Sie zurück zu LINQ. LINQ würde auch ermöglichen es Ihnen, um die Felder umbenennen, was Sie wollen.
[BEARBEITEN], Wenn Sie nicht ändern können, verwenden Dictionary<T,T>, machen Sie eine Kopie der NameValueCollection als ein Wörterbuch in die Methode und binden.
Wenn Sie dies tun eine Menge, Sie schreiben, könnte eine Erweiterung Methode zum konvertieren in ein Wörterbuch und verwenden Sie es, so.
Es ist ein wenig schwierig, weil die enumerator gibt nur den Schlüssel. Aber, können Sie den Wert Key mit Container.DataItem und dann schauen in die NameValueCollection, um den Wert:
Schließlich habe ich verwendet, die vorgeschlagene Lösung in Ihrer Erweiterung-Implementierung, aber ohne die Erweiterung selbst.
vielleicht tun einige Helfer-Klasse, die statische tun und die übersetzung für mich in einem Ort, anstatt viele. Diese Erweiterung ist sehr praktisch... 🙂
Dank. X.
Wenn Sie eine geschachtelte
Repeater
(oderGridView
zu, ich bin sicher), die Sie benötigen, zu ändern Daneben Brackett ' s Antwort wie folgt Aussehen, oder sonst erhalten Sie eine Laufzeit-Fehlermeldung über die nicht in der Lage zu finden, ein Steuerelement mit dem Namen der rpt.Ich finde es am besten verwenden Sie ein StringDictionary für databinding & Zugriff auf Schlüssel & Wert
Ich hatte ein ähnliches problem mit der Bindung eines Wörterbuch (SortedDictionary wirklich) an ein GridView zu wollen, benennen Sie die Spalten. Was schließlich für mich arbeiten, ist irgendeine Sache ein wenig leichter zu Lesen.
Dies funktioniert, indem die Container.DataItem, das aktuelle Element in der GridView versucht, Anzeige, Nötigung ist es in seiner tatsächlichen Datentyp (KeyValuePair) und dann die anzeigen der gewünschten Eigenschaft von diesem Element.