Вы можете задать эти атрибуты через стили в столбцах самого GridView. Вы можете установить для атрибута AutoGenerateColumns значение false и указать нужные столбцы и указать размеры в каждом столбце. Кроме того, следуя хорошей практике веб-дизайна, вы можете использовать CSS для каждого столбца. Если вы хотите изменить его на лету, я бы предложил использовать ItemTemplates и добавить компоненты, которые вы можете изменить в поле.
Ex:
<asp:GridView runat="server" AutoGenerateColumns="false" ID="Grid" DataSourceID='MyObjectDataSource' CssClass="grid_table">
<AlternatingRowStyle CssClass="even" />
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<div id="NameColumn" runat="server">Name Center</div>
</HeaderTemplate>
<ItemTemplate>
<%# Eval("LastName") %>, <%# Eval("FirstName") %>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<div id="AgeColumn" runat="server">Age</div>
</HeaderTemplate>
<ItemTemplate>
<%# Eval("Age") %>
</ItemTemplate>
</asp:TemplateField>
<EmptyDataTemplate>There are no Users</EmptyDataTemplate>
</asp:GridView>
С помощью этого кода вы можете получить доступ к ширине столбцов:
NameColumn.Width = 100;
AgeColumn.Width = 2;
Однако, есть много способов, вы можете сделать это, в том числе получения колонки непосредственно:
Grid.Columns[0].HeaderStyle.Width = 100;
Grid.Columns[0].ItemStyle.Width = 100;
Grid.Columns[1].HeaderStyle.Width = 2;
Grid.Columns[1].ItemStyle.Width = 2;
Или снова с использованием css:
Grid.Columns[0].HeaderStyle.CssClass = "name_column_header";
Grid.Columns[0].ItemStyle.CssClass = "name_column_data";
Grid.Columns[1].HeaderStyle.CssClass = "age_column_header";
Grid.Columns[1].ItemStyle.Width = "age_column_data";
В любом случае, ваша устрица в мире, это всего лишь некоторые отправные точки.
Благодарим вас за ответ. Я не знаю, может ли это мне помочь ... Что вы здесь указали, меняет ширину перед компиляцией. Как насчет того, хотите ли вы менять ширину при ее запуске? – 2009-02-13 18:18:06