Vorrei sapere come posso ottenere un nome di colonna da un GridView? dal suo numero non dal nome. mi piace: Nome | Età | Compleanno: (quindi nome = 0, età = 1 ecc ...)Come ottenere il nome della colonna da gridview?
grazie.
Vorrei sapere come posso ottenere un nome di colonna da un GridView? dal suo numero non dal nome. mi piace: Nome | Età | Compleanno: (quindi nome = 0, età = 1 ecc ...)Come ottenere il nome della colonna da gridview?
grazie.
È possibile ottenere in questo modo:
gv.HeaderRow.Cells[i].Text
O come questa:
gv.Rows[0].Cells[i].Text
Righe [0] dovrebbe essere la vostra riga di intestazione.
semplicemente
GridView1.Rows[0].Cells[0].Text;
provare questo se si vuole tutto il valore cellule provenienti da ciascuna delle righe
foreach (GridViewRow r in GridView1.Rows)
{
string s = r.Cells[0].Text;
string y = r.Cells[1].Text;
}
aggiornamento:
provare questo
foreach (TableCell Tc in GridView1.HeaderRow.Cells)
{
//if you are not getting value than find childcontrol of TabelCell.
string sssb = Tc.Text;
foreach (Control ctl in Tc.Controls)
{
//Child controls
Label lb = ctl as Label;
string s = lb.Text;
}
}
ciao ho provato e ottengo solo il numero, ho bisogno di ottenere il nome della colonna –
potrebbe essere la cella della colonna nel controllo figlio su HeaderRow.try il mio codice di aggiornamento. E fammi sapere cosa succede? – Jigs
Ricevo il riferimento all'oggetto non impostato su un'istanza di una stringa di oggetto s = lb.text –
Questa non è la risposta alla domanda. È solo la risposta se non cambi mai il testo dell'intestazione nella griglia. Il richiedente della domanda voleva ottenere il nome del campo del database per indice.
Ho visto una serie di "risposte" che forniscono solo il testo nella riga selezionata di un gridview, o il testo di intestazione, che entrambi non rispondere alla domanda che è stato chiesto ...
Si può chiedi il perché? Se si dovesse andare a fare verifiche di aggiornamenti in un sistema e ha voluto per confrontare i valori vecchi e nuovi valori e aggiornare solo se cambiano e voler indicare quale campo è stato aggiornato come si fa a mostrare il database dei nomi campo della tabella l'indice di il cappio.
Per esempio:
Protected Sub gv_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs)
Dim intValCount As Integer = Integer.Parse(e.NewValues.Count)
If intValCount > 0 Then
Dim i As Integer = 0
For i = 0 To intValCount - 1
If Not e.OldValues(i).Equals(e.NewValues(i)) Then
' values have changed, audit the change
Sys.Audits.General(intID, "the_database_table", <the table field by index(i)>, e.OldValues(i).ToString, e.NewValues(i).ToString)
End If
i += 1
Next
End If
End Sub
Quindi le domande è come si fa a ottenere il nome del campo tabella del database per indice tramite codice dietro? Anch'io ho cercato questo e tutte le "risposte" che ho visto non sono le risposte che penso che alcuni di noi stiano davvero cercando. Tutti i metodi citati che ho visto qui non sono riferimenti a prova di proiettile a un nome di campo di tabelle di database.
//// Header column names
int gridViewCellCount = yourGridView.Rows[0].Cells.Count;
// string array to hold grid view column names.
string[] columnNames = new string[gridViewCellCount];
for (int i = 0; i < gridViewCellCount; i++)
{
columnNames[i] = ((System.Web.UI.WebControls.DataControlFieldCell)(yourGridView.Rows[0].Cells[i])).ContainingField.HeaderText;
}
Rivisitare questa vecchia domanda .... è possibile ottenere i nomi dei campi dei dati associati a un GridView con questo tipo di codice. Questo rende un dizionario di colnum e nome del campo.
Solo una risposta qui che prende una pugnalata al nome del campo invece del testo dell'etichetta della colonna. –
È facile: qui leggo il testo dell'intestazione di gridview per ogni cella di intestazione e li aggiungo come nuove colonne a una tabella di dati.
DataTable dt = new DataTable();
foreach(DataControlFieldHeaderCell column in yourGridview.HeaderRow.Cells)
{
dt.Columns.Add(column.Text.Trim().Replace(" ", ""));
}
//Make sure you do all this after yourGridview.DataBind();
//If you do not want to bind data first simply bind an empty list like so:
/* yourGridview.DataSource = new List<string>();
yourGridview.DataBind(); */
Non dimenticare di contrassegnare come risponderti per favore: D – JoRouss
37 minuti più tardi, e nessuna risposta contrassegnato. Forse la notifica di questo ricorderà loro. – Khan
hi ho provato e ho solo il numero, ho bisogno di ottenere il nome della colonna –