Как скрыть столбец (GridView), но все же получить доступ к его значению?
У меня есть GridView с DataSource
(firebase database SQL). Я хочу скрыть столбец, но все же могу получить доступ к значению при выборе записи. Может ли кто-нибудь показать мне, как это сделать?
Это столбец, который я хочу скрыть и хочу получить доступ к его значению:
Я попробовал все, чтобы скрыть столбец (свойство Visible="false"
), но я не могу получить доступ к его значению.
- GridView с двумя столбцами, шириной заливки
- Редактирование строки Gridview - динамическое связывание с DropDownList
- Полная обратная передача, вызванная LinkButton внутри GridView внутри UpdatePanel
- Как я могу экспортировать GridView.DataSource в datatable или dataset?
- GridView связан с свойствами вложенного classа
- Высота Gridview снижается
- Как установить GridView внутри ScrollView
- Столбцы двух связанных таблиц базы данных в одном ASP.NET GridView с EntityDataSource
- Проблемы с GridView внутри ScrollView в android
- Лучший способ сделать сортировку WPF ListView / GridView при нажатии на заголовок столбца?
- Сетка изображений внутри ScrollView
- Как скрыть столбцы в ASP.NET GridView с автогенерированными столбцами?
- Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?
Если я не ошибаюсь, 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
.
- У меня есть
BoundField
и привязываю DataField. - В событии
RowDataBound
я делаю некоторый процесс в этом случае. -
До появления
GridView
я пишу следующее:protected void GridviewLecturer_PreRender(object sender, EventArgs e) { GridviewLecturer.Columns[0].Visible = false; }