2012-03-07 16 views

risposta

11

È 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.

+4

Non dimenticare di contrassegnare come risponderti per favore: D – JoRouss

+2

37 minuti più tardi, e nessuna risposta contrassegnato. Forse la notifica di questo ricorderà loro. – Khan

+0

hi ho provato e ho solo il numero, ho bisogno di ottenere il nome della colonna –

2

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; 
     } 
    } 
+0

ciao ho provato e ottengo solo il numero, ho bisogno di ottenere il nome della colonna –

+0

potrebbe essere la cella della colonna nel controllo figlio su HeaderRow.try il mio codice di aggiornamento. E fammi sapere cosa succede? – Jigs

+0

Ricevo il riferimento all'oggetto non impostato su un'istanza di una stringa di oggetto s = lb.text –

0

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.

3
//// 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; 
} 
1

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.

+0

Solo una risposta qui che prende una pugnalata al nome del campo invece del testo dell'etichetta della colonna. –

0

È 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(); */ 
Problemi correlati