Я связываю таблицу с gridview в asp.net как таковом
grdIssues.DataSource = mdtIssues;
grdIssues.DataBind();
Проблема, я не могу затем управлять шириной столбца, asp.net кажется решенному, своему собственному, каков ширина каждый столбец должен быть. Методы такой как
grdIssues.Columns[0].ItemStyle.Width = 100;
grdIssues.Columns[1].ItemStyle.Width = 100;
не работайте, потому что столбцы создаются динамично. Я не могу полагать, что нет способа сделать это за исключением ручного создания каждого столбца и заполнения каждой строки.
Я бы сделал это так:
foreach (DataControlField field in grdIssues.Columns)
{
field.HeaderStyle.Width = 100;
}
Вам не нужно вручную создавать столбцы, чтобы задать им ширину, вы можете сделать это
foreach (DataControlField column in OrdersGV.Columns)
{
column.ItemStyle.Width = Unit.Pixel(100);
}
Мне нравится отвечать на свой вопрос, когда это возможно, чтобы будущие пользователи, ищущие в этой теме, могли найти ответ.
Я не смог найти способ сделать то, что я хотел, напрямую. Однако я обнаружил, что если я сам определяю столбцы, я могу изменить их свойства. В этом примере я хотел отцентрировать данные столбца. Что-то вроде этого.
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;
}