Gridview не слушает HeaderStyle.Width = 183 - PullRequest
1 голос
/ 08 сентября 2011

Может кто-нибудь объяснить это мне. Я пытаюсь установить размеры GridView.

int totalWidth = 550;<br> int subWidth = totalWidth / _module.Values.Count;

с 3 модулями - 183, а с 2 - 275.

Позже в коде я делаю:
myGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;<br> myGrid.HeaderStyle.Width = subWidth;

Теперь я бы предположил, что ширина столбцов будет равна 183px с 3 модулями или 275 с 2. Фактические размеры: 224 + 153 + 172 = 549. Текст заголовка столбца 1 будет длинным, но если я его принудительно заставлю быть 183px, почему он настаивает на том, чтобы быть 224? Текст в столбце 2 короткий, в столбце 3 средний. Для всех трех заголовков все еще достаточно места, чтобы их можно было немного сжать.

Просто чтобы прояснить - я также делаю:
myGrid.RowStyle.HorizontalAlign = HorizontalAlign.Center;<br> myGrid.RowStyle.Width = subWidth;

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

Метод, о котором идет речь:

private void CreateGridView ()
{
GridView myGrid = new GridView ();
int totalWidth = 550;
int subWidth = totalWidth / _module.Values.Count;

    #region DataTable

    DataTable dataTable = new DataTable();

    string[] dataArray = new string[_module.Values.Count];

    for (int i = 0; i < _module.Values.Count; i++)
    {
        dataArray[i] = _module.Values[i].Value.ToString("n0"); ;
    }

    for (int i = 0; i < _module.Values.Count; i++)
    {
        dataTable.Columns.Add(_module.Values[i].Text.ToString());
    }

    dataTable.Rows.Add(dataArray);

    myGrid.DataSource = dataTable;

    #endregion

    myGrid.Width = totalWidth;

    myGrid.GridLines = GridLines.None;

    myGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
    myGrid.HeaderStyle.Width = subWidth;

    myGrid.RowStyle.HorizontalAlign = HorizontalAlign.Center;
    myGrid.RowStyle.Width = subWidth;

    myGrid.DataBind();

    Controls.Add(myGrid);
}

1 Ответ

1 голос
/ 08 сентября 2011

Почему бы не установить CssClass в GridView (а также в других дочерних элементах GridView, таких как HeaderStyle, RowStyle и т. Д.) И установить ширину для этого, вместо того чтобы элементы UI / design находились внутри скомпилированного кода?*

Я хотел бы создать таблицу стилей или добавить в существующую таблицу стилей с объявлением класса:

.myStyle {
    width: 550px;
}

.myStyle2Modules {
     width: 750px;
}

.myStyleLotsOfModules {
     width: 1000px;
}

, а затем сослаться на класс.Затем вы можете изменить положение и ширину пользовательского интерфейса на лету, отредактировав CSS.Вы можете программно выбрать класс CSS в коде, но фактические определения этих стилей находятся в таблице стилей.

Позвольте вашему коду обрабатывать функциональность, основные моменты и реализацию - пусть таблица стилей обрабатывает все элементы дизайнатакие как цвета, шрифты, ширина, границы и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...