Ho un gridview che utilizza colonne autogenerate, perché l'utente può selezionare le colonne da restituire in una query. Voglio nascondere la colonna con l'identità. Come nascondo la colonna generata automaticamente? Anche nell'evento di database, il conteggio delle colonne è zero.Nascondi colonna generata automaticamente in Gridview
risposta
ho scoperto come fare questo. È necessario utilizzare l'evento rowdatabound e nascondere la cella quando la riga è vincolata.
Protected Sub ResultGrid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles ResultGrid.RowDataBound
e.Row.Cells(1).Visible = False
End Sub
Vorrei controllare che la colonna fosse maggiore di zero, se così fosse, userei il fatto che la collezione di colonne può essere referenziata per nome di colonna così come integer per impostare la colonna di identità su nascosto.
Ti serve? La cosa più semplice sarebbe non includerla nella query di selezione.
Se ne avete bisogno e sapere la posizione della colonna:
gridView.Columns[KnownColumnIndex].Visible = false;
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[1].Visible = false;
}
ho violato attorno al problema con il seguente. Ho scritto funzioni di aiuto per darmi l'indice di colonna corretto e quindi per nascondere la colonna desiderata. Una volta che le funzioni di supporto sono a posto, è sufficiente chiamare l'unica linea dalla funzione gridview_databound.
protected void grd_DataBound(object sender, EventArgs e)
{
try
{
HideAutoGeneratedGridViewColumn(grd, "nContractID");
}
catch (Exception ex)
{
}
}
public int getColumnIndex(GridView grd, string sColumnName)
{
return getColumnIndex(grd, sColumnName, false);
}
/// <summary>
/// Returns the columns index of the specified column based on the header text.
/// </summary>
/// <param name="grd"></param>
/// <param name="sColumnName"></param>
/// <returns></returns>
public int getColumnIndex(GridView grd, string sColumnName, bool bAutoGeneratedColumn)
{
int ReturnVal = -1;
try
{
if (grd != null)
{
if (!bAutoGeneratedColumn)
{
#region Static Columns
if (grd.Columns.Count > 0)
{
for (int x = 0; x < grd.Columns.Count; x++)
{
if (grd.Columns[x] != null)
{
if (grd.Columns[x].HeaderText.ToLower() == sColumnName.ToLower())
{
ReturnVal = x;
break;
}
}
}
}
#endregion
}
else
{
#region AutoGenerated Columns
if (grd.HeaderRow != null)
{
for (int x = 0; x < grd.HeaderRow.Cells.Count; x++)
{
if (grd.HeaderRow.Cells[x] != null)
{
if (grd.HeaderRow.Cells[x].Text.ToLower() == sColumnName.ToLower())
{
ReturnVal = x;
break;
}
}
}
}
#endregion
}
}
}
catch (Exception ex)
{
ReturnVal = - 1;
LogMessage("getColumnIndex(GridView grd, string sColumnName, bool bAutoGeneratedColumn) Error", ex.Message);
}
return ReturnVal;
}
/// <summary>
/// Returns the columns index of the specified column based on the header text.
/// </summary>
/// <param name="sColumnName"></param>
/// <param name="r"></param>
/// <returns></returns>
public int getColumnIndex(string sColumnName, GridViewRow r)
{
int ReturnVal = -1;
try
{
if (r != null)
{
if (r.Cells.Count > 0)
{
for (int x = 0; x < r.Cells.Count; x++)
{
if (r.Cells[x] != null)
{
if (((System.Web.UI.WebControls.DataControlFieldCell)(r.Cells[x])).ContainingField.HeaderText == sColumnName)
{
ReturnVal = x;
break;
}
}
}
}
}
}
catch (Exception ex)
{
ReturnVal = -1;
}
return ReturnVal;
}
public void HideAutoGeneratedGridViewColumn(GridView grd, string sColumnName)
{
HideAutoGeneratedGridViewColumn(grd, getColumnIndex(grd, sColumnName, true));
}
public void HideAutoGeneratedGridViewColumn(GridView grd, int nColumnIndex)
{
try
{
grd.HeaderRow.Cells[nColumnIndex].Visible = false;
for (int x = 0; x < grd.Rows.Count; x++)
{
grd.Rows[x].Cells[nColumnIndex].Visible = false;
}
}
catch (Exception ex)
{
LogMessage("HideAutoGeneratedGridViewColumn(GridView grd, int nColumnIndex) Error", ex.Message);
}
}
In questo modo nascondere l'intestazione di colonna generata automaticamente e la cella senza di essa guardando incasinato come il databound farà. Questa è la risposta corretta presa da here
Protected Sub Gdvisitor_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles Gdvisitor.RowCreated
If (e.Row.Cells.Count > 1) Then
e.Row.Cells(1).Visible = False
End If
End Sub
- 1. Vista elenco WPF rimuovere colonna aggiuntiva generata
- 2. Qt Nascondi colonna in QTableView
- 3. WPF Nascondi griglia Colonna
- 4. Nascondi barra dei menu di Eclipse (nascondi automaticamente)
- 5. nascondi automaticamente i messaggi flash nei binari
- 6. Aggiungere codice alla classe generata automaticamente in SWIG
- 7. Rimuovere la prima colonna (#) di Yii2 GridView
- 8. nascondi l'intestazione della colonna della tabella primefaces
- 9. Nascondi automaticamente il layout del lettore multimediale in Android
- 10. Nascondi automaticamente la tastiera virtuale in ViewPager.OnPageChangeListener onPageSelected()?
- 11. Ottieni il valore della colonna nascosta in Gridview
- 12. Come utilizzare Rowspan in Gridview solo per 1a colonna
- 13. Modificare tutte le righe per una colonna in una GridView
- 14. Visualizzazione CheckBox in GridView DataBound sulla base di colonna varchar
- 15. Colonna Android GridView, larghezza variabile come l'app GooglePlus
- 16. Metodo per trovare l'indice della colonna GridView per nome
- 17. nascondi/nascondi tutti i commenti in xcode
- 18. HorizontalAlign.Center non funziona in GridView
- 19. Come ottenere il nome della colonna da gridview?
- 20. Yii2 GridView non può impostare la larghezza della colonna
- 21. Nascondi riga in GridLayout
- 22. SQL: verificare se una colonna incrementa automaticamente
- 23. Apex - Rapporto interattivo - Nascondi colonna nel download CSV?
- 24. Nascondi colonna se tutte le righe sono vuote
- 25. Yii2 esteso/Personalizza GridView
- 26. calcola automaticamente la larghezza della colonna in JTable
- 27. CommandArgument in Gridview
- 28. TimeSpan DataFormatString in Gridview
- 29. GridView in Java
- 30. Righe visualizzate più volte in GridView
+1, l'unica cosa da tenere a mente è che lo si cambia per i RowType appropriati. Ad esempio if (e.Row.RowType! = DataControlRowType.Pager) {e.Row.Cells [1] .Visible = false; } –