web-dev-qa-db-ja.com

colspan gridview行

Gridviewに行を追加しました。 gridviewには20列あります。 2-3列の下に2-3行を表示し、colspanとして残っているグリッドビューでcolspanのような機能を実行するにはどうすればよいですか?.

基本的に私はグリッドビューの行のグリッドビューにコルスパンを実装したいと思います。

したがって、現在のgvは次のようになります。

列1列2列3列4列......列20

セル1セル2セル3セル4 ......セル20(行#1の場合)

のようなものが欲しい

列1列2列3列4列......列20

    Cell1      Cell2    ...... Cell 20   (For Rows # 1)

任意のクエリについて教えてください。

ありがとう

14
xorpower

次のように、GridViewのOnRowCreatedイベントを処理する必要があります。

 protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        e.Row.Cells[2].ColumnSpan = 2;
        //now make up for the colspan from cell2
        e.Row.Cells.RemoveAt(4);
    }
}

マークアップは次のようになります。

<asp:GridView runat="server" ID="grid" OnRowCreated="grid_RowCreated" >

上記の例では、グリッドに次のように入力しました。

DataTable dt = new DataTable();
        for (int i = 0; i < 5; i++)
        {
            dt.Columns.Add("Col " + i);
        }
        for (int i = 0; i < 10; i++)
        {
            DataRow r = dt.NewRow();
            r.ItemArray=new object[]{"row "+i,"row "+i,"row "+i,"row "+i,"row "+i};
            dt.Rows.Add(r);
        }

        grid.DataSource = dt;
        grid.DataBind();

そしてそれはこれを作り出します: sample image

ROWS(必ずしもヘッダーではない)に特定のcolspanを持たせたいと思ったことに気づきました。その場合、次のことができます。

 protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[2].ColumnSpan = 2;
        //now make up for the colspan from cell2
        e.Row.Cells.RemoveAt(4);
    }
}

そしてそれは作り出すでしょう:

enter image description here

26
Icarus

BoundFieldおよびTemplateFieldタグには、プロパティItemStyle-Width = "22%"ご覧のとおり、各列にパーセンテージを設定してレスポンシブにすることができます

0
user3526110