Ich habe eine GridView mit einer DataSource
(SQL-Datenbank). Ich möchte eine Spalte ausblenden, kann aber trotzdem auf den Wert zugreifen, wenn ich den Datensatz auswähle. Kann mir jemand zeigen, wie das geht?
Dies ist die Spalte, die ich ausblenden und trotzdem auf ihren Wert zugreifen möchte:
<asp:BoundField DataField="Outlook_ID" HeaderText="OutlookID" />
Ich habe alles versucht, um die Spalte (Eigenschaft Visible="false"
) auszublenden , aber ich kann nicht auf ihren Wert zugreifen.
<head runat="server"> <title>Accessing GridView Hidden Column value </title> <style type="text/css"> .hiddencol { display: none; } </style> <asp:BoundField HeaderText="Email ID" DataField="EmailId" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" > </asp:BoundField> ArrayList EmailList = new ArrayList(); foreach (GridViewRow itemrow in gvEmployeeDetails.Rows) { EmailList.Add(itemrow.Cells[YourIndex].Text); }
quelle
Definieren Sie einen Stil in CSS:
Fügen Sie dann das
ItemStyle-CssClass="hiddencol"
und dasHeaderStyle-CssClass="hiddencol"
Attribut zum Rasterfeld hinzu:<asp:BoundField DataField="ID" HeaderText="ID" ItemStyle-CssClass="hiddencol" HeaderStyle-CssClass="hiddencol" ClientIDMode="Static" />
quelle
Sie können DataKeys zum Abrufen des Werts solcher Felder verwenden, da Sie (wie Sie sagten) beim Festlegen einer Normalen
BoundField
als sichtbares Falsch deren Wert nicht erhalten können.Legen Sie in der
.aspx
Datei dieGridView
Eigenschaft festDataKeyNames = "Outlook_ID"
Jetzt können Sie in einem Ereignishandler wie folgt auf den Wert dieses Schlüssels zugreifen:
grid.DataKeys[rowIndex]["Outlook_ID"]
Dadurch erhalten Sie die ID am angegebenen Zeilenindex des Rasters.
quelle
Sie können dies programmgesteuert tun:
grid0.Columns[0].Visible = true; grid0.DataSource = dt; grid0.DataBind(); grid0.Columns[0].Visible = false;
Auf diese Weise setzen Sie die Spalte vor der Datenbindung auf sichtbar, damit die Spalte generiert wird. Wenn Sie festlegen, dass die Spalte nicht sichtbar ist, wird sie nicht angezeigt.
quelle
Wenn Sie ein
TemplateField
in Ihren Spalten habenGridView
und Sie beispielsweise ein Steuerelement namens blah daran gebunden haben. Dann platzieren Sie dasoutlook_id
alsHiddenField
dort wie folgt:<asp:TemplateField HeaderText="OutlookID"> <ItemTemplate> <asp:Label ID="blah" runat="server">Existing Control</asp:Label> <asp:HiddenField ID="HiddenOutlookID" runat="server" Value='<%#Eval("Outlook_ID") %>'/> </ItemTemplate> </asp:TemplateField>
Nehmen Sie nun die Zeile für den gewünschten Fall
outlook_id
und greifen Sie auf das Steuerelement zu.Für den
RowDataBound
Zugriff wie folgt:string outlookid = ((HiddenField)e.Row.FindControl("HiddenOutlookID")).Value;
Kommen Sie zurück, wenn Sie Probleme beim Zugriff auf die angeklickte Zeile haben. Und vergessen Sie nicht, die Veranstaltung zu erwähnen, bei der Sie darauf zugreifen möchten.
quelle
Sie können die Spalte
hidden
auf der Serverseiteaspx
erstellen. Aus irgendeinem Grund unterscheidet sich dies von der Ausführung des Codes. Es kann immer noch referenziert werden, als ob es sichtbar wäre. Fügen Sie diesen Code einfach zu IhrerOnDataBound
Veranstaltung hinzu.protected void gvSearchResults_DataBound(object sender, EventArgs e) { GridView gridView = (GridView)sender; if (gridView.HeaderRow != null && gridView.HeaderRow.Cells.Count > 0) { gridView.HeaderRow.Cells[UserIdColumnIndex].Visible = false; } foreach (GridViewRow row in gvSearchResults.Rows) { row.Cells[UserIdColumnIndex].Visible = false; } }
quelle
Lassen Sie sichtbare Spalten, bevor Sie die füllen
GridView
. Füllen SieGridView
die Spalten aus und blenden Sie sie dann aus.quelle
So ermitteln Sie den Wert einer ausgeblendeten Spalte in einer
GridView
, die auf Folgendes festgelegt istVisible=False
:SpecialInstructions
Fügen Sie in diesem Fall das Datenfeld zur DataKeyNames-Eigenschaft der gebundenen GridView hinzu und greifen Sie auf diese Weise darauf zu.txtSpcInst.Text = GridView2.DataKeys(GridView2.SelectedIndex).Values("SpecialInstructions")
Das war's, es funktioniert jedes Mal sehr einfach.
quelle
Ich habe eine neue Lösung, um die Spalte auf der Clientseite mit CSS oder Javascript oder JQuery auszublenden .
Und in der Aspx-Datei, in der Sie die Spalte hinzufügen, sollten Sie die CSS-Eigenschaften angeben:
<asp:BoundField HeaderText="Address Key" DataField="Address_Id" ItemStyle-CssClass="col0" HeaderStyle-CssClass="col0" > </asp:BoundField>
quelle
Ich habe eine ähnliche Methode wie user496892 verwendet:
SPBoundField hiddenField = new SPBoundField(); hiddenField.HeaderText = "Header"; hiddenField.DataField = "DataFieldName"; grid.Columns.Add(hiddenField); grid.DataSource = myDataSource; grid.DataBind(); hiddenField.Visible = false;
quelle
Sie können es Code hinter tun.
Set visible= false
für Spalten nach Datenbindung. Danach können Sie die Sichtbarkeit " true " in der Funktion row_selection in der Rasteransicht erneut ausführen. Es wird funktionieren !!quelle
Wenn ich Zugriff möchte, wird ein Wert von
GridView
zuvorGridView
angezeigt.BoundField
und bindeDataField
nominell.RowDataBound
Fall mache ich einen Prozess in diesem Fall.Bevor
GridView
es erscheint, schreibe ich Folgendes:protected void GridviewLecturer_PreRender(object sender, EventArgs e) { GridviewLecturer.Columns[0].Visible = false; }
quelle