Как скрыть столбец (GridView), но все же получить доступ к его значению?

У меня есть GridView с DataSource (firebase database SQL). Я хочу скрыть столбец, но все же могу получить доступ к значению при выборе записи. Может ли кто-нибудь показать мне, как это сделать?

Это столбец, который я хочу скрыть и хочу получить доступ к его значению:

  

Я попробовал все, чтобы скрыть столбец (свойство Visible="false" ), но я не могу получить доступ к его значению.

Если я не ошибаюсь, GridView не BoundColumns значения BoundColumns , у которых есть атрибут visible="false" . Две вещи, которые вы можете сделать здесь, одну (как объяснено в ответе V4Vendetta), чтобы использовать Datakeys . Или вы можете изменить свой BoundColumn на TemplateField . И в ItemTemplate добавьте элемент управления, например Label , сделайте его видимость ложным и придайте значение этой Label .

  Accessing GridView Hidden Column value     ArrayList EmailList = new ArrayList(); foreach (GridViewRow itemrow in gvEmployeeDetails.Rows) { EmailList.Add(itemrow.Cells[YourIndex].Text); } 

Определить стиль в css:

 .hiddencol { display: none; } 

Затем добавьте ItemStyle-CssClass="hiddencol" и HeaderStyle-CssClass="hiddencol" в поле сетки:

  

Вы можете использовать DataKeys для получения значения таких полей, потому что (как вы сказали), когда вы устанавливаете обычный BoundField как видимый false, вы не можете получить их значение.

В файле .aspx задано свойство GridView

 DataKeyNames = "Outlook_ID" 

Теперь в обработчике событий вы можете получить доступ к значению этого ключа следующим образом:

 grid.DataKeys[rowIndex]["Outlook_ID"] 

Это даст вам идентификатор в указанном rowindex сетки.

Вы можете сделать это программно:

 grid0.Columns[0].Visible = true; grid0.DataSource = dt; grid0.DataBind(); grid0.Columns[0].Visible = false; 

Таким образом вы установите столбец видимым перед привязкой данных, поэтому столбец создается. Вы устанавливаете столбец не видимым, поэтому он не отображается.

Если у вас есть TemplateField внутри столбцов вашего GridView и у вас есть, скажем, элемент управления с именем blah, связанный с ним. Затем поместите outlook_id как HiddenField таким образом:

   Existing Control    

Теперь возьмите строку в случае, если вы хотите outlook_id а затем получите доступ к outlook_id управления.
Для доступа к RowDataBound это RowDataBound так:

 string outlookid = ((HiddenField)e.Row.FindControl("HiddenOutlookID")).Value; 

Вернитесь, если у вас есть проблемы с доступом к нажатой строке. И не забудьте указать событие, в которое вы хотели бы получить доступ.

Вы можете сделать столбец hidden на стороне сервера, и по какой-то причине это отличается от кода aspx . На него все еще можно ссылаться, как если бы он был виден. Просто добавьте этот код в свое событие OnDataBound .

 protected void gvSearchResults_DataBound(object sender, EventArgs e) { GridView gridView = (GridView)sender; if (gridView.HeaderRow != null && gridView.HeaderRow.Cells.Count > 0) { gridView.HeaderRow.Cells[UserIdColumnIndex].Visible = false; } foreach (GridViewRow row in gvSearchResults.Rows) { row.Cells[UserIdColumnIndex].Visible = false; } } 

Перед заполнением GridView оставите видимые столбцы. Заполните GridView а затем скройте столбцы.

Вот как получить значение скрытого столбца в GridView , для которого установлено значение Visible=False : добавьте поле данных в этом случае SpecialInstructions к свойству DataKeyNames связанного GridView и получите к нему доступ таким образом.

 txtSpcInst.Text = GridView2.DataKeys(GridView2.SelectedIndex).Values("SpecialInstructions") 

Вот и все, он работает каждый раз очень просто.

Я использовал метод, подобный user496892:

 SPBoundField hiddenField = new SPBoundField(); hiddenField.HeaderText = "Header"; hiddenField.DataField = "DataFieldName"; grid.Columns.Add(hiddenField); grid.DataSource = myDataSource; grid.DataBind(); hiddenField.Visible = false; 

У меня есть новое решение, скрыть столбец на стороне клиента, используя css или javascript или jquery .

 .col0 { display: none; } 

И установите gvClientDetails.Columns[0].Visible = true; , Если установлено значение false .

Вы можете сделать это код.

Set visible= false для столбцов после привязки данных. После этого вы снова сможете увидеть видимость « true » в функции row_selection из сетки. Это будет работать!

Когда я хочу получить доступ к некоторому значению из GridView до появления GridView .

  1. У меня есть BoundField и привязываю DataField.
  2. В событии RowDataBound я делаю некоторый процесс в этом случае.
  3. До появления GridView я пишу следующее:

     protected void GridviewLecturer_PreRender(object sender, EventArgs e) { GridviewLecturer.Columns[0].Visible = false; } 
  • Добавление заголовка в GridView (Android)
  • Как найти элемент управления в TemplateField GridView?
  • Как отключить прокрутку GridView в Android?
  • как связать выпадающий список в gridview?
  • Преобразование DBContext в ObjectContext для использования с GridView
  • Как реализовать выбор полной строки в GridView без кнопки выбора?
  • Отображение изображений из определенной папки на SD-карте с использованием gridview
  • Как добавить параметр «подтвердить удаление» в ASP.Net Gridview?
  • Пересечение столбцов GridLayoutManager Android Recyclerview
  • Пейджинговые и сортировочные сетки с ASP.Net MVC
  • Экспорт GridView в несколько листов Excel
  • Давайте будем гением компьютера.