Mam gridview, który używa generowane automatycznie kolumny, ponieważ użytkownik może wybrać kolumny, które mają zostać zwrócone w kwerendzie. Chcę ukryć kolumnę z tożsamością. Jak ukryć automatycznie wygenerowaną kolumnę? Nawet w zdarzeniu databound liczba kolumn wynosi zero.Ukryj automatycznie wygenerowane kolumny w Gridview
Odpowiedz
odkryłem jak to zrobić. Musisz użyć zdarzenia rowdatabound i ukryć komórkę po związaniu wiersza.
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
Sprawdziłbym, czy kolumna była większa od zera, jeśli tak, to skorzystałbym z faktu, że do kolekcji kolumn można się odwoływać poprzez nazwę kolumny, a także liczbę całkowitą, aby ustawić kolumnę tożsamości na ukrytą.
Potrzebujesz tego? Najprostszą rzeczą byłoby pominięcie go w kwerendzie wyboru.
Jeśli jest to potrzebne i poznać stanowisko kolumna:
gridView.Columns[KnownColumnIndex].Visible = false;
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[1].Visible = false;
}
Mam hacked wokół problemu z następujących czynności. Napisałem funkcje pomocnicze, aby podać poprawny indeks kolumny, a następnie ukryć żądaną kolumnę. Po uruchomieniu funkcji pomocnika wystarczy wywołać jedną linijkę z funkcji 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);
}
}
Spowoduje to ukrycie generowanego automatycznie nagłówka kolumny i komórki bez jej pomieszania, tak jak zrobi to databound. To jest poprawna odpowiedź pochodzi z 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. Ukryj Yii2 GridView Przyciski akcji
- 2. Ukryj kolumny tabeli automatycznie, zaznaczając pole wyboru z jQuery
- 3. GridView wyświetla tylko dwie kolumny
- 4. Uzyskaj wartość ukrytej kolumny w Gridview
- 5. Pulpit nawigacyjny Google - ukryj kolumny
- 6. Ukryj prymitywy nagłówek kolumny tabeli
- 7. Ukryj kolumnę GridView według nazwy w czasie wykonywania w ASP.Net
- 8. JTable ukryj i pokaż kolumny
- 9. Jak ukryć automatycznie wygenerowane pliki według TypeScript w NerdTree?
- 10. Jak mogę skompilować automatycznie wygenerowane pliki C w wersji wstępnej?
- 11. Span dwie kolumny gridview nad trzema
- 12. WPF: Dodaj polecenie wygenerowane automatycznie przez powiązanie elementów menu
- 13. Wyświetlanie CheckBox w GridView z danymi na podstawie kolumny varchar
- 14. Jak zdefiniować szerokość "Auto" kolumny WPF GridView w kodzie?
- 15. Kolumny automatycznie zmieniają rozmiar na QTableView
- 16. Jak dodać tekst podpowiedzi do nagłówka kolumny Gridview, WPF VS2010
- 17. GridView z dwoma kolumnami, pierwsza pozycja obejmuje obie kolumny
- 18. Tworzenie maksymalnej szerokości dla kolumny GridView i Zawijanie tekstu
- 19. Różnica między DataGrid a GridView w ASP.NET?
- 20. Jak uzyskać dostęp do kolumny gridview na rowdatabound?
- 21. Jak uzyskać wygenerowane zapytanie JPA?
- 22. HorizontalAlign.Center nie działa w GridView
- 23. Dzieci w centrum w GridView
- 24. Czy mogę ukryć automatycznie wygenerowane pliki sampliku .js i .map.js w atomie?
- 25. ustawienie koloru nagłówka gridview
- 26. Findbugs wykluczyć wygenerowane pliki
- 27. IntelliJ Idea wygenerowane źródło
- 28. Wygenerowane metody oceny wielomianowej
- 29. Jak uzyskać wygenerowane klucze z commons dbutils?
- 30. URL w yii2 GridView
+1, Jedyną rzeczą, na którą należy zwrócić uwagę, jest to, że zmienisz go dla odpowiednich typów RowTypes. Na przykład jeśli (e.Row.RowType! = DataControlRowType.pager) {e.Row.Cells [1] .Visible = false; } –