Как скрыть столбец (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; } 
    Давайте будем гением компьютера.