如何在绑定到数据表时设置gridview列宽
我正在将表绑定到asp.net中的gridview
grdIssues.DataSource = mdtIssues; grdIssues.DataBind();
问题是我无法控制列宽,asp.net似乎决定了它自己的每列应该是什么宽度。 方法如
grdIssues.Columns[0].ItemStyle.Width = 100; grdIssues.Columns[1].ItemStyle.Width = 100;
不起作用,因为列是动态创建的。 我无法相信没有办法在手动创建每个列并填充每一行时做到这一点。
您不必手动创建列来设置宽度,您可以这样做
foreach (DataControlField column in OrdersGV.Columns) { column.ItemStyle.Width = Unit.Pixel(100); }
我能够使用RowDataBound
事件更改某个Gridview
列的宽度(绑定到Datatable
):
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { e.Row.Cells[0].Attributes["width"] = "200px"; }
我喜欢随时回答我自己的问题,以便将来搜索post的用户都能找到答案。
我找不到直接做我想要的方法。 但是我发现如果我自己定义列,我可以更改属性。 在这个例子中,我想使列数据居中。 像这样的东西。
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; }
我做到了:
gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px"; gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px"; gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px";
我这样做:
foreach (DataControlField field in grdIssues.Columns) { field.HeaderStyle.Width = 100; }