2009-07-06 6 views
0

Es gibt kein Asp: HiddenField, das in einem GridView verwendet werden kann, also habe ich mich gefragt, was ähnlich funktionieren würde.Äquivalenz eines Asp: HiddenField für eine GridView

Mein Argument dafür ist, dass ich ein ButtonField habe, das einen OnRowCommand auslöst. Von dort kann ich herausfinden, welche Zeile ausgewählt wurde, aber ich kann den Textwert nicht aus dem ButtonField abrufen, um die Daten anzuzeigen, die an ihn gebunden waren (über DataTextField).

Meine Lösung war, ein BoundField zu haben und stattdessen den Textwert davon abzurufen, da ich bereits wusste, welche Zeile ausgewählt wurde. Das hat funktioniert, aber ich muss es verstecken.

Jemand hat vorgeschlagen, ein HiddenField in einem TemplateField zu verschachteln, aber ich hatte Probleme beim Abrufen des Textwerts aus diesem HiddenField. Gibt es eine Möglichkeit, auf das Steuerelement im TemplateField zuzugreifen, um den Textwert von HiddenField abzurufen?

Wenn jemand irgendwelche Vorschläge für Alternativen hat, wäre das auch gut.

Danke,
Matt

Antwort

1

können Sie verwenden, um die DataKeyNames Eigenschaft auf dem Gridview.

gridView.DataKeyNames = { "values", "you", "want "}; 

und dann können Sie sie wie folgt zugreifen:

gridView.DataKeys[rowId].Values["value"]; 
0

ist es möglich, eine andere ID-Säule, als einzigartige repräsentativ für einen Datensatz (Zeile) hinzufügen? Diese bestimmte ID-Spalte kann mit Stil eingestellt werden: display = none, um sie zu verbergen, aber immer noch befindet sich die ID im HTML-Formular.

und dann können Sie den Wert dieser bestimmten ID-Spalte abrufen, die weiter verarbeitet werden soll.

hoffe, das hilft,

hadi

2

Sie ein Template-Feld mit dem Command gleich der die ID der Datensatz/Zeile verwenden können.

<ItemTemplate> 
    <asp:Button ID="Button1" runat="server" CausesValidation="false" 
     CommandName="SomeCommand" Text="Button" CommandArgument='<%# Eval("SomeID") %'></asp:LinkButton> 
</ItemTemplate> 

Dann wird in der Zeilenbefehl Ereignisverarbeitung können Sie diesen Wert durch e.CommandArgument erhalten