Asp.netのグリッドビューにテーブルをバインドしています
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);
}
Gridview
イベントを使用して、特定のDatatable
列(RowDataBound
にバインドされている)の幅を変更できました。
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
e.Row.Cells[0].Attributes["width"] = "200px";
}
私はそれを次のように行いました:
gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px";
gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px";
gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px";
スレッドを検索する将来のユーザーが答えを見つけることができるように、できる限り自分の質問に答えるのが好きです。
自分がやりたいことを直接行う方法が見つかりませんでした。ただし、自分で列を定義すると、プロパティを変更できることがわかりました。この例では、列データを中央に配置したいと思いました。このようなもの。
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;
}