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!

Foi útil?

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"]
    }
}

Verifique MSDN aqui.

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top