Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rvlira

Configurar manualmente tamanho das colunas do GridView

Recommended Posts

Pessoal, estou tentando dimensionar as colunas de um GridView mas não estou conseguindo.

 

Eu tenho dois grids. Cada um dentro de uma "div" com o estilo de overflow configurado como "scroll" para que o grid não atrapalhe o layout da página.

 

No primeiro grid, defini a largura para 733 pixels. Dessa forma, não é necessário rolar a div para visualizar os dados.

 

Já o segundo grid (logo abaixo), possui uma coluna a mais que primeiro. Eu precisava fazer com que o tamanho das três primeiras colunas ficassem exatamente iguais aos do primeiro grid, de forma que a quarta coluna ficasse escondida, sendo necessário rolar a div para visualizar os dados.

 

Essa tarefa de colocar o tamanho das colunas é que está complicada. Removi a largura definida desse segundo grid no Aspx e tentei especificar a largura das colunas com "<ItemStyle width="100px" />", com "<HeaderStyle width="100px" />", com uma combinação dos dois para cada coluna, mas no final não funciona.

 

As três primeiras colunas não estão "empurrando" a quarta coluna para fora da visualização da div. Já tentei até mesmo especificar uma largura muito grande para o grid, mas dessa forma não consigo fazer as colunas ficarem do mesmo tamanho do grid que está acima.

 

O código da página aspx é a seguinte:

 

<div style="width:750px;height:201px;overflow:scroll;" >
    <asp:GridView ID="GridView1" runat="server" Width="733px" 
                    BackColor="White" BorderColor="#999999" BorderStyle="Solid" 
                    BorderWidth="1px" CellPadding="3" ForeColor="Black" 
                    GridLines="Vertical" AutoGenerateColumns="False" 
                    AllowPaging="True" AllowSorting="True" 
                    DataKeyNames="Id" PageSize="5" >
        <FooterStyle BackColor="#8F88B1" />
        <PagerStyle BackColor="#999999" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#52428B" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#8F88B1" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="#EEEEEE" />
        <PagerSettings Mode="NumericFirstLast" />
        <Columns>
            <asp:CommandField ButtonType="Button" ShowSelectButton="True" Visible="False" />
            <asp:BoundField DataField="Id" HeaderText="Id" Visible="False" />
            <asp:BoundField HeaderText="Field1" DataField="Field1" >
                <ItemStyle Width="40%" />
            </asp:BoundField>
            <asp:BoundField HeaderText="Field2" DataField="Field2" >
                <ItemStyle Width="40%" />
            </asp:BoundField>
            <asp:BoundField HeaderText="Field3" DataField="Field3">
                <ItemStyle Width="20%" />
            </asp:BoundField>
        </Columns>
    </asp:GridView>
</div>
<br /><br />
<div style="width:750px;height:201px;overflow:scroll;" >
    <asp:GridView ID="GridView2" runat="server" 
                    BackColor="White" BorderColor="#999999" BorderStyle="Solid" 
                    BorderWidth="1px" CellPadding="3" ForeColor="Black" 
                    GridLines="Vertical" AutoGenerateColumns="False" 
                    AllowPaging="True" AllowSorting="True" 
                    DataKeyNames="Id" PageSize="5" >
        <FooterStyle BackColor="#8F88B1" />
        <PagerStyle BackColor="#999999" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#52428B" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#8F88B1" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="#EEEEEE" />
        <PagerSettings Mode="NumericFirstLast" />
        <Columns>
            <asp:CommandField ButtonType="Button" ShowSelectButton="True" Visible="False" />
            <asp:BoundField DataField="Id" HeaderText="Id" Visible="False" />
            <asp:BoundField HeaderText="Field1" DataField="Field1" >
                <ItemStyle Width="287px" />
            </asp:BoundField>
            <asp:BoundField HeaderText="Field2" DataField="Field2" >
                <ItemStyle Width="287px" />
            </asp:BoundField>
            <asp:BoundField HeaderText="Field3" DataField="Field3">
                <ItemStyle Width="150px" />
            </asp:BoundField>
            <asp:BoundField HeaderText="Field4" DataField="Field4">
                <ItemStyle Width="120px" />
            </asp:BoundField>
        </Columns>
    </asp:GridView>
</div>

Fiz também o seguinte código para carregar dados aleatórios na grid:

 

public class MyNewClass
{
    private int _id;
    private string _field1;
    private string _field2;
    private string _field3;
    private string _field4;
    public int Id { get { return _id; } set { _id = value; } }
    public string Field1 { get { return _field1; } set { _field1 = value; } }
    public string Field2 { get { return _field2; } set { _field2 = value; } }
    public string Field3 { get { return _field3; } set { _field3 = value; } }
    public string Field4 { get { return _field4; } set { _field4 = value; } }
}
//
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<MyNewClass> list = new List<MyNewClass>();

        MyNewClass item = new MyNewClass();
        item.Id = 1;
        item.Field1 = "Value1";
        item.Field2 = "Value2";
        item.Field3 = "Value3";
        item.Field4 = "Value4";

        list.Add(item);
        list.Add(item);
        list.Add(item);
        list.Add(item);
        list.Add(item);
        list.Add(item);

        GridView1.DataSource = list;
        GridView2.DataSource = list;
        GridView1.DataBind();
        GridView2.DataBind();
    }
}

Agradeço por qualquer informação que possam me passar. Já estou há muito tempo tentando configurar essas grids.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Iae cara td blza.. Você ja tento colocar o ItemStyle dentro da Tag BoundField? Ex.

Ao invés de

<asp:BoundField HeaderText="Field2" DataField="Field2" >

<ItemStyle Width="40%" />

</asp:BoundField>

 

colocar

 

<asp:BoundField HeaderText="Field2" DataField="Field2" ItemStyle-Width="definir pixel" />

</asp:BoundField>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.