2010-09-17 13 views
6

Ho questo codice che popola una casella di testo basato su una cella della riga selezionata del gridviewdati Gridview Impedire vuote da popolamento " " in testo

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     txtComment.Text = row.Cells[14].Text.Trim(); 

    } 

Esso mostra   nella casella di testo txtComment se cellulare [ 14] non ha dati.

C'è un modo per impedire a   di apparire quando non ci sono dati nella cella della riga selezionata?


Edit Ho provato questo e non ha funzionato

if (row.Cells[14].Text.Trim().Length > 1) 
{ 
    txtComment.Text = row.Cells[14].Text.Trim(); 
} 
else 
{ 
    txtComment.Text = row.Cells[14].Text = ""; 
} 

========================= ==========================================

questo ha funzionato

if (row.Cells[14].Text.Trim()!=" ") 
{ 
    txtComment.Text = row.Cells[14].Text.Trim(); 
} 
else 
{ 
    txtComment.Text = row.Cells[14].Text = ""; 
} 
+0

hai provato 'row.Cells [14] .Text = string.Empty;' or '=" ";'? –

+0

Ho provato entrambi = stringa.Vuoto; e = ""; e ho ancora il & nbsp –

risposta

4

Il problema è che si sta accedendo alla proprietà Text della cella HTML anziché a quella e colonna di dati. Il gridview deve mostrare   in una cella di tabella vuota affinché la cella di tabella sia ancora visibile quando viene sottoposta a rendering su alcuni browser. Questo a causa dell'HTML e non ha nulla a che fare con i tuoi dati o codice;

Cosa si dovrebbe fare è qualcosa di simile:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DataRow myRow = (DataRow)GridView1.SelectedRow.DataItem; 
    txtComment.Text = myRow[14]; 
} 

Il formato per l'accesso alla proprietà elemento di dati sta per essere un po 'diverso in base a ciò che DataItem è in realtà, si può lanciare al tipo di oggetto che si adatta all'origine dati e quindi accede di conseguenza alle sue proprietà.

MODIFICA: ho modificato il codice di esempio per dimostrare di trasmettere la proprietà DataItem a un oggetto DataRow. Hai bisogno di lanciarlo a qualsiasi tipo di alimentazione come fonte dati. Spero che questo sia più chiaro.

+0

Ho ricevuto questo messaggio di errore quando lo provo "Impossibile applicare l'indicizzazione con [] a un'espressione di tipo 'oggetto'" –

+0

@JoshuaSlocum: vedere le mie modifiche sopra, devi lanciare il DataItem su qualunque sia il tipo di oggetto utilizzato come origine dati. – CodingGorilla

10

Ho anche avuto un problema come questo, e ho trovato questo utile anche:

txtComment.Text = row.Cells[14].Text.Replace(" ", ""); 

Spero che possa aiutare :)

+0

pessima soluzione ... molti altri lavorano meglio intorno ... – elle0087

2

Non c'è bisogno di scrivere alcun codice, basta aggiungere HtmlEncode = "false" in Boundfield.

7

Usa NullDisplayText =""

 <asp:BoundField DataField="EmployeeName" HeaderText="Name" NullDisplayText=" "/> 
+0

pulito e funziona per me. – ZeeProgrammer

2

Utilizzare questa:

Server.HtmlDecode() 

Ad esempio:

txtComment.Text = Server.HtmlDecode(row.Cells[14].Text); 

E non solo utilizza gli spazi, ma anche altre conversioni come e commerciali (&) ed ecc.

Problemi correlati