2010-04-29 5 views
7

sto associazione di un tavolo per un GridView in asp.net come taleCome impostare una larghezza di colonna GridView l'associazione ad un DataTable

grdIssues.DataSource = mdtIssues; 

grdIssues.DataBind(); 

Il problema è che non posso quindi controllare la larghezza della colonna, asp.net sembra deciso per proprio che larghezza dovrebbe essere ogni colonna. Metodi come

grdIssues.Columns[0].ItemStyle.Width = 100; 
grdIssues.Columns[1].ItemStyle.Width = 100; 

non funzionano perché le colonne vengono create dinamicamente. Non posso credere che non ci sia un modo per fare questo a meno di creare manualmente ogni colonna e riempire ogni riga.

risposta

6

Non dovete creare manualmente le colonne per impostare la larghezza di loro, si può fare questo

foreach (DataControlField column in OrdersGV.Columns) 
    { 
     column.ItemStyle.Width = Unit.Pixel(100); 
    } 
+0

questo viene a mancare per compilare ottengo l'eccezione Errore 'oggetto' non contiene una definizione per 'ItemStyl e 'e nessun metodo di estensione' ItemStyle 'che accetta un primo argomento di tipo' oggetto 'può essere trovato (ti manca una direttiva using o un riferimento di assembly?) –

+0

Ho appena modificato la risposta, per favore provalo. Assicurati di farlo dopo aver collegato la tua rete alla rete – alejandrobog

-1

farei così:

foreach (DataControlField field in grdIssues.Columns) 
{ 
    field.HeaderStyle.Width = 100; 
} 
+0

Questa compilazione non funziona. Solo la colonna che ho aggiunto manualmente, un pulsante, si trova nella collezione di colonne. Bob –

+0

In che evento si sta eseguendo il codice? Non puoi farlo in Page_Load. Utilizza l'evento Databound di grdIssues. –

+0

il codice sopra non funziona anche per me. Come possiamo gestire questo? –

0

mi piace rispondere alla mia domanda ogni volta che posso così gli utenti futuri che cercano la discussione troveranno la risposta.

Non riuscivo a trovare un modo per fare ciò che volevo direttamente. Tuttavia ho trovato se definisco le colonne me stesso, potrei cambiare le proprietà. In questo esempio, volevo centrare i dati della colonna. Qualcosa come questo.

BoundField bdfRaisedDate = new BoundField(); 
clsUtilities.SetBoundFieldCenter(ref bdfRaisedDate, "RaisedDateShort", "Opened", "RaisedDate"); 

grdIssues.Columns.Add(bdfRaisedDate); 

grdIssues.DataSource = mdtIssues; 

grdIssues.DataBind(); 

public static void SetBoundFieldCenter(ref BoundField bdfAny, string pDataField, string pHeadingValue, string pSortExpression) 
{ 
     bdfAny.DataField = pDataField; 
     bdfAny.HeaderText = pHeadingValue; 
     bdfAny.SortExpression = pSortExpression; 
     bdfAny.HeaderStyle.HorizontalAlign = HorizontalAlign.Center; 
     bdfAny.ItemStyle.HorizontalAlign = HorizontalAlign.Center; 
} 
3

sono stato in grado di cambiare la larghezza di una certa Gridview colonna (legato ad una Datatable) con la RowDataBound evento:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { 
    e.Row.Cells[0].Attributes["width"] = "200px"; 
} 
0

ho fatto come:

gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px"; 
gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px"; 
gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px"; 
Problemi correlati