Como usar um oculto Boundfield em um GridView em ASP.NET?
-
12-11-2019 - |
Pergunta
Eu sou a ligação de um GridView usando uma fonte de dados no asp.net e eu gostaria de ter escondido BoundFields para que eu possa acessar esses valores na minha RowDataBound Função.No entanto, quando eu defina Visible="False" sobre estes BoundFields os valores não ficar definido e estão sempre em branco no RowDataBound função.
Existe uma maneira de fazer isso?Eu tenho visto algumas sugestões de configuração de estilo no BoundField escondida, mas isso não funcionou para mim.Idealmente, eu não quero nem uma coluna criada no gridview, eu só quero estes valores ser escondido para que eu possa acessá-los.Obrigado!
Solução
Você já tentou utilizar o DataItem
do GridViewRowEventArgs
passou para o seu RowDataBound
método?
Como:
protected void MyGridView_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
// do something with rowView["myHiddenField"]
}
}
Outras dicas
Estranho, Como você está fazendo isso?Eu sei que eu fiz isso antes de usar:
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("ColumnName")%>'/>
Por isso eu sugiro que você usar DataKey.
Pls, consulte este link http://www.codeproject.com/KB/grid/Data_presentation.aspx
por exemplo:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
DataKeyNames="id_emp,Código">
int EmployeeID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0]);
int DepartementID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[1]);
em DataRow ligado:
((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString();
Geetha