9

我正在将表格绑定到 asp.net 中的 gridview

grdIssues.DataSource = mdtIssues;

grdIssues.DataBind();

问题是我无法控制列宽,asp.net 似乎自己决定每列应该是什么宽度。方法如

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

不起作用,因为列是动态创建的。我不敢相信除了手动创建每一列并填充每一行之外,没有办法做到这一点。

4

5 回答 5

6

您不必手动创建列来设置它们的宽度,您可以这样做

 foreach (DataControlField column in OrdersGV.Columns)
    {
      column.ItemStyle.Width = Unit.Pixel(100);
    }
于 2010-04-29T21:37:54.827 回答
4

我能够通过事件更改某个Gridview列的宽度(绑定到 a DatatableRowDataBound

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
    e.Row.Cells[0].Attributes["width"] = "200px";
}
于 2014-06-18T12:21:21.593 回答
1

我喜欢尽可能回答我自己的问题,以便将来搜索该主题的用户找到答案。

我找不到直接做我想做的事的方法。但是我发现如果我自己定义列,我可以更改属性。在此示例中,我想将列数据居中。像这样的东西。

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;
}
于 2010-05-12T17:27:15.767 回答
0

我这样做是:

gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px";
gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px";
gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px";
于 2016-06-29T12:01:36.270 回答
-1

我会这样做:

foreach (DataControlField field in grdIssues.Columns)
{
  field.HeaderStyle.Width = 100;
}
于 2010-04-30T10:55:43.493 回答