2015-09-21 3 views
1

Моего GridView:GridView - установить ширину столбца в коде (AutoGenerateColumns = "истинный")

<asp:GridView ID="GridView1" runat="server" 
    OnRowDataBound="GridView1_RowDataBound" 
    AutoGenerateColumns="true" 
    DataKeyNames="Role_id"> 
</asp:GridView> 

В коде позади:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.Header) 
    { 
     //e.Row.Cells[2].Width = 120;      // isn't working.... 
    } 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     e.Row.Cells[2].Width = new Unit(120);    // isn't working.... 
     TableCell cell = e.Row.Cells[2]; 
     cell.HorizontalAlign = HorizontalAlign.Right;   //**** does work! 
     cell.BackColor = Color.LightGray;      //**** does work! 
     //cell.Width = 120;        // isn't working.... 
     //e.Row.Cells[2].Width = new Unit("120px") ;  // isn't working.... 
     //e.Row.Cells[2].CssClass = "myGV_Cell_Width"; // isn't working.... 
    } 
} 

Элемент GridView заполняется успешно.
Обратите внимание, что I может установить выравнивание и обратную цветную колонку, но не ее ширину.
Я пробовал много решений, циркулирующих вокруг, но никто не работал.
Он всегда изменяет размер столбца до самого длинного содержимого.
Это можно сделать вообще ...?

+0

Просто подумайте, как отдельные ячейки могут иметь разную ширину в таблице. Колонка может иметь ширину, а не ячейки. –

+0

Строки не могут иметь ширину столбцов. Все это должно быть указано в таблице стилей. – wolfeh

+0

Да. Я должен практиковать свой английский. Тем временем я ищу способ установить ширину столбца из кода позади. (Я изменю название и спасибо за замечание). – gadi

ответ

2

Я был в состоянии сделать это с событием RowCreated, но я должен был установить ширину сетки и также установите сетку на таблицу-макет: исправлено

<asp:GridView ID="GridView1" runat="server" 
    style="table-layout:fixed;" Width="1000px" 
    OnRowCreated = "GridView1_RowCreated" 
    OnRowDataBound="GridView1_RowDataBound" 
    AutoGenerateColumns="true" 
    DataKeyNames="Role_id"> 
</asp:GridView> 

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) 
{ 

e.Row.Cells[0].Width = New Unit("220px"); 

} 
+0

ДА !!!! Это сделал трюк. – gadi

0

жерех: GridView оказывает HTML таблицы, так и вам просто нужно установить ширину столбца с помощью CSS

th, td { 
    width: 120px; 
} 
+0

У меня есть myStyleSheet.css, где я помещаю свои стили. Добавление стиля, о котором вы упомянули, не помогло (хотя в число страниц были некоторые странные вещи. Третий столбец [2] по-прежнему изменяет размер до самого длинного содержимого). – gadi

+0

Вы можете использовать страницу Firefox (https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector) или страницу Chrome (https://developer.chrome.com/devtools/docs/dom-and-styles) инспекторам, чтобы узнать, какие стили применяются к вашим элементам HTML. –

Смежные вопросы