web-dev-qa-db-ja.com

データテーブルにバインドするときにグリッドビューの列幅を設定する方法

Asp.netのグリッドビューにテーブルをバインドしています

grdIssues.DataSource = mdtIssues;

grdIssues.DataBind();

問題は、列の幅を制御できないことです。asp.netは、各列の幅を独自に決定しているようです。などの方法

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

列は動的に作成されるため、機能しません。手動で各列を作成し、各行を埋める以外に、これを行う方法がないとは信じられません。

8
Bob Avallone

列の幅を設定するために手動で列を作成する必要はありません。これを行うことができます

 foreach (DataControlField column in OrdersGV.Columns)
    {
      column.ItemStyle.Width = Unit.Pixel(100);
    }
6
alejandrobog

Gridviewイベントを使用して、特定のDatatable列(RowDataBoundにバインドされている)の幅を変更できました。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
    e.Row.Cells[0].Attributes["width"] = "200px";
}
3
T. Johnson

私はそれを次のように行いました:

gridView1.HeaderRow.Cells[0].Attributes["Width"] = "100px";
gridView1.HeaderRow.Cells[1].Attributes["Width"] = "50px";
gridView1.HeaderRow.Cells[2].Attributes["Width"] = "200px";
1
Deepesh

スレッドを検索する将来のユーザーが答えを見つけることができるように、できる限り自分の質問に答えるのが好きです。

自分がやりたいことを直接行う方法が見つかりませんでした。ただし、自分で列を定義すると、プロパティを変更できることがわかりました。この例では、列データを中央に配置したいと思いました。このようなもの。

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;
}
1
Bob Avallone