Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Por padrão, colunas no controle GridView são dimensionadas automaticamente.Colunas processam como células de tabelas HTML (elementos td) sem informações de largura; a maioria dos navegadores dimensionam células de tabelas para permitir o conteúdo mais largo na coluna.
Se for necessário, você pode definir a largura de colunas individuais no controle GridView por meio de programação.Isso é útil, se a largura da coluna depender de informações que estão disponíveis somente em tempo de execução.Por exemplo, você pode dimensionar uma coluna de acordo com o seu conteúdo — isto é, com base nos dados aos quais o controle GridView é vinculado.
A técnica básica para definir a largura da coluna envolve a configuração da propriedade Width de um modelo de coluna.Se você desejar que a largura seja definida de acordo com seu conteúdo, você pode manipular o evento RowDataBound.Isso torna os dados para uma linha disponíveis a você para exame.
Para definir a largura da coluna dinamicamente
No código, defina a propriedade Width da propriedade ItemStyle de uma coluna do controle GridView para a largura desejada.
O exemplo de código a seguir mostra como definir a largura de todas as colunas no controle GridView1 para o valor que um usuário insere em uma caixa de texto.
Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Try Dim colWidth As Integer colWidth = CInt(Server.HtmlEncode(TextBox1.Text)) If colWidth > 0 Then For i As Integer = 0 To GridView1.Columns.Count - 1 GridView1.Columns(i).ItemStyle.Width = colWidth Next End If Catch ' Report error. End Try End Sub
protected void Button1_Click(object sender, EventArgs e) { try { int colWidth = Int16.Parse(Server.HtmlEncode(TextBox1.Text)); if (colWidth > 0) { for (int i = 0; i < GridView1.Columns.Count; i++) { GridView1.Columns[i].ItemStyle.Width = colWidth; } } } catch { // Report error. } }
Para definir a largura da coluna com base no conteúdo de dados
Crie um manipulador para o evento RowDataBound.
O evento RowDataBound é gerado sempre que uma nova linha é ligada a dados na grade e lhe oferece acesso aos dados de cada linha.
No manipulador de eventos, faça o seguinte:
Crie um objeto DataRowView e atribua a ele o valor DataItem para a linha de grade atual.
A propriedade DataItem é digitada como um objeto.Portanto, você deve convertê-lo.
Teste uma linha de dados (DataControlRowType) para certificar-se que você está trabalhando com uma linha ligada a dados e não com um cabeçalho ou um rodapé.
A partir do objeto DataRowView, extraia o valor dos dados que você deseja examinar.
Defina a propriedade Wrap da propriedade ItemStyle como false.
Se a propriedade Wrap está false, a coluna é automaticamente redimensionada.
O exemplo de código a seguir mostra como definir a largura de uma coluna (neste caso, a terceira coluna) com base na largura do maior elemento de dados da segunda coluna.O manipulador de eventos RowDataBound é chamado uma vez para cada linha de dados que é exibida pelo controle GridView.O código armazena o número de caracteres do maior elemento em um membro de página protegido.O código define a largura da coluna para o número de caracteres multiplicado por 30 (um multiplicador arbitrário).
Protected widestData As Integer Protected Sub GridView1_RowDataBound(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Dim drv As System.Data.DataRowView drv = CType(e.Row.DataItem, System.Data.DataRowView) If e.Row.RowType = DataControlRowType.DataRow Then If drv IsNot Nothing Then Dim catName As String = drv(1).ToString() Dim catNameLen As Integer = catName.Length If catNameLen > widestData Then widestData = catNameLen GridView1.Columns(2).ItemStyle.Width = _ widestData * 30 GridView1.Columns(2).ItemStyle.Wrap = False End If End If End If End Sub Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load widestData = 0 End Sub
protected int widestData; protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { System.Data.DataRowView drv; drv = (System.Data.DataRowView)e.Row.DataItem; if (e.Row.RowType == DataControlRowType.DataRow) { if (drv != null) { String catName = drv[1].ToString(); Response.Write(catName + "/"); int catNameLen = catName.Length; if (catNameLen > widestData) { widestData = catNameLen; GridView1.Columns[2].ItemStyle.Width = widestData * 30; GridView1.Columns[2].ItemStyle.Wrap = false; } } } } protected void Page_Load(object sender, EventArgs e) { widestData = 0; }