Ok, ahora pongo el código. Creo que todos mis problemas se deben a que doy unos valores de anchura y de visible antes de que los datos se "bindeen", por tanto, cuando se "bindean" al estar la columna a visible=false no se bindea esa columna, y la anchura del resto se amolda a los datos bindeados.
PD. Utilizo un AccesDataSource para meter los datos en la tabla.
Código ASP:
Ver original<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="usuario,hora"
DataSourceID="AccessDataSource1" EnableSortingAndPagingCallbacks="True"
Width="299px">
<PagerSettings FirstPageText="Principio" LastPageText="Final"
NextPageText="Siguiente" PreviousPageText="Anterior" />
<RowStyle Wrap="True" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="Selector" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="usuario" HeaderText="usuario" ReadOnly="True"
SortExpression="usuario">
<FooterStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="hora" HeaderText="hora" ReadOnly="True"
SortExpression="hora">
<FooterStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<HeaderStyle HorizontalAlign="Center" Width="20px" Wrap="False" />
<ItemStyle HorizontalAlign="Center" Width="100px" Wrap="False" />
</asp:BoundField>
<asp:BoundField DataField="tipo" HeaderText="tipo" SortExpression="tipo">
<ControlStyle Width="20px" />
<FooterStyle Width="20px" Wrap="False" />
<HeaderStyle Width="20px" Wrap="False" />
<ItemStyle Width="100px" Wrap="False" />
</asp:BoundField>
<asp:BoundField ItemStyle-Width="1" DataField="dato" HeaderText="dato"
SortExpression="dato" ReadOnly="true">
<ItemStyle Width="100px" HorizontalAlign="Left" Wrap="False" />
</asp:BoundField>
</Columns>
<PagerStyle HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#CCFFFF" BorderStyle="Solid" Font-Bold="True" />
<EditRowStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="20px"
Wrap="True" />
<AlternatingRowStyle BackColor="#CCFFCC" HorizontalAlign="Center"
VerticalAlign="Middle" />
</asp:GridView>
Código C#:
Ver originalprotected void BotonDibujar_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("Selector");
if (cb != null && cb.Checked)
{
s = s + row.Cells[4].Text + ";";
...