Как установить ширину столбца gridview при привязке к таблице данных - PullRequest
7 голосов
/ 30 апреля 2010

Я привязываю таблицу к сетке в asp.net как таковую

grdIssues.DataSource = mdtIssues;

grdIssues.DataBind();

Проблема в том, что я не могу контролировать ширину столбца, asp.net, похоже, сам решил, какой шириной должен быть каждый столбец. Такие методы, как

 grdIssues.Columns[0].ItemStyle.Width = 100;
 grdIssues.Columns[1].ItemStyle.Width = 100;

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

Ответы [ 5 ]

6 голосов
/ 30 апреля 2010

Вам не нужно вручную создавать столбцы, чтобы установить их ширину, вы можете сделать это

 foreach (DataControlField column in OrdersGV.Columns)
    {
      column.ItemStyle.Width = Unit.Pixel(100);
    }
3 голосов
/ 18 июня 2014

Мне удалось изменить ширину определенного столбца Gridview (привязанного к Datatable) с событием RowDataBound:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
    e.Row.Cells[0].Attributes["width"] = "200px";
}
0 голосов
/ 29 июня 2016

Я сделал это так:

gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px";
gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px";
gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px";
0 голосов
/ 12 мая 2010

Мне нравится отвечать на свои вопросы всякий раз, когда я могу, поэтому будущие пользователи, ищущие ветку, найдут ответ

Я не мог найти способ сделать то, что хотел напрямую. Однако я обнаружил, что если я определю столбцы самостоятельно, я смогу изменить свойства. В этом примере я хотел центрировать данные столбца. Как то так.

BoundField bdfRaisedDate = new BoundField();
clsUtilities.SetBoundFieldCenter(ref bdfRaisedDate, "RaisedDateShort",    "Opened", "RaisedDate");

grdIssues.Columns.Add(bdfRaisedDate);

grdIssues.DataSource = mdtIssues;

grdIssues.DataBind();

public static void SetBoundFieldCenter(ref BoundField bdfAny, string pDataField, string pHeadingValue, string  pSortExpression)
{
      bdfAny.DataField = pDataField;
      bdfAny.HeaderText = pHeadingValue;
      bdfAny.SortExpression = pSortExpression;
      bdfAny.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
      bdfAny.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
}
0 голосов
/ 30 апреля 2010

Я бы сделал это так:

foreach (DataControlField field in grdIssues.Columns)
{
  field.HeaderStyle.Width = 100;
}
...