2011-08-04 41 views
12

Tôi đã thêm hàng vào chế độ xem lưới. Có 20 cột trong GridView. Làm thế nào tôi có thể làm một tính năng giống như colspan trong GridView mà có thể chỉ cho tôi 2-3 hàng dưới 2-3 cột và còn lại như một colspan.hàng lưới colspan gridview

Về cơ bản tôi muốn triển khai colspan trong GridView trên các hàng của GridView.

do đó gv hiện tại của tôi là như thế;

Col 1 Col 2 Col 3 Col 4 ...... Col 20

CELL1 CELL2 CELL3 di động 4 ...... di động 20 (Đối với dòng # 1)

Tôi muốn có cái gì đó như

Col 1 Col 2 Col 3 Col 4 ...... Col 20

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

Hãy cho tôi biết đối với bất kỳ truy vấn.

Cảm ơn

Trả lời

23

Bạn cần để xử lý các sự kiện OnRowCreated của GridView như sau:

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); 
    } 
} 

đánh dấu của bạn nên được một cái gì đó như thế này:

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

Trên ví dụ trên, tôi điền vào lưới điện với điều này:

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(); 

Và nó tạo ra này: sample image

Tôi chỉ nhận ra rằng bạn muốn có ROWS (không nhất thiết phải là tiêu đề) để có colspan nhất định, trong trường hợp này bạn có thể làm:

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); 
    } 
} 

Và nó sẽ sản xuất:

enter image description here

+0

việc sử dụng đoạn mã thứ hai bạn đã đăng là gì? cộng với, nơi để bao gồm giống nhau? –

+1

@Xung quyền: Đoạn mã thứ hai khác với đoạn mã đầu tiên trong đó đoạn mã đầu tiên kiểm tra nếu hàng được tạo là Đầu trang và cột thứ hai kiểm tra xem hàng được tạo ra có phải là DataRow hay không (chú ý tại các câu lệnh if; họ khác nhau). – Icarus

+0

Tôi không yêu cầu các sự kiện được tạo hàng. Tôi yêu cầu các đoạn mã đã bao gồm 2 cho các vòng lặp (giữa 2 sự kiện tạo hàng) –

Các vấn đề liên quan