这是GridView动态添加行的基本代码,可以进行修改扩充,实现自己想要的动态添加行效果。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //创建一个GridView的一个分隔行(根据DataControlRowType来设置)
2 GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.Separator, DataControlRowState.Normal);
3 //设置行的底色
4 rowSeparator.BackColor = System.Drawing.Color.White;
5 //设置单元格集
6 //可以根据实际情况设置,我在这儿是根据RowDataBound事件(e参数)来设置的
7 TableCellCollection cells = e.Row.Cells;
8 //设置单元格,根据实际情况增加,我这儿是增加一个跨所有列的行
9 TableCell separatorCell = new TableCell();
10 //根据GridView的第一列的显示情况设置单元格和跨列数
11 if (gvMain.Columns[0].Visible == true)
12 {
13 separatorCell.ColumnSpan = cells.Count;
14 }
15 else
16 {
17 separatorCell.ColumnSpan = cells.Count - 1;
18 }
19 //单元格的对齐
20 separatorCell.HorizontalAlign = HorizontalAlign.Right;
21 //单元格的背景色
22 separatorCell.BackColor = System.Drawing.Color.FromArgb(226, 226, 226);
23 //单元格的高度
24 separatorCell.ControlStyle.Height = 5;
25 //在单元格集中增加单元格控件
26 rowSeparator.Cells.Add(separatorCell);
27 //设置GridView行的可见性
28 rowSeparator.Visible = true;
29 //在GridView中的相应行插入行
30 gvMain.Controls[0].Controls.AddAt(e.Row.RowIndex + 1, rowSeparator);
2 GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.Separator, DataControlRowState.Normal);
3 //设置行的底色
4 rowSeparator.BackColor = System.Drawing.Color.White;
5 //设置单元格集
6 //可以根据实际情况设置,我在这儿是根据RowDataBound事件(e参数)来设置的
7 TableCellCollection cells = e.Row.Cells;
8 //设置单元格,根据实际情况增加,我这儿是增加一个跨所有列的行
9 TableCell separatorCell = new TableCell();
10 //根据GridView的第一列的显示情况设置单元格和跨列数
11 if (gvMain.Columns[0].Visible == true)
12 {
13 separatorCell.ColumnSpan = cells.Count;
14 }
15 else
16 {
17 separatorCell.ColumnSpan = cells.Count - 1;
18 }
19 //单元格的对齐
20 separatorCell.HorizontalAlign = HorizontalAlign.Right;
21 //单元格的背景色
22 separatorCell.BackColor = System.Drawing.Color.FromArgb(226, 226, 226);
23 //单元格的高度
24 separatorCell.ControlStyle.Height = 5;
25 //在单元格集中增加单元格控件
26 rowSeparator.Cells.Add(separatorCell);
27 //设置GridView行的可见性
28 rowSeparator.Visible = true;
29 //在GridView中的相应行插入行
30 gvMain.Controls[0].Controls.AddAt(e.Row.RowIndex + 1, rowSeparator);
这是在项目中的一个实例,是动态添加按照某一个属性来统计总数SubTotal的例子,可以参照下,有不明白的地方可以给我留言或者发表评论。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #region Insert GridView Row
2
3 private void InsertSubTotalRow(int subTotalRow, int amountNumber, decimal totalAmount, int remindTextIndex, string remindText)
4 {
5 GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.Separator, DataControlRowState.Normal);
6 //To add a data row
7 //Set the background color of row
8 rowSeparator.BackColor = System.Drawing.Color.White;
9 //Setting the cell
10 TableCellCollection cells = gvwTemplate.Rows[0].Cells;
11
12 //Add column
13 for (int i = 0; i < gvwTemplate.Rows[0].Cells.Count; i++)
14 {
15 TableCell separatorCell = new TableCell();
16
17 //According to the first column of GridView to set the display of the cell and cross out the number
18 if (gvwTemplate.Columns[i].Visible == true)
19 {
20 separatorCell.ColumnSpan = 0;
21
22 if (i == remindTextIndex)
23 {
24 Label lblRemindText = new Label();
25
26 if (remindText == "")
27 {
28 lblRemindText.Text = "";
29 }
30 else
31 {
32 lblRemindText.Text = "<nobr>" + remindText + "</nobr>";
33 }
34
35 lblRemindText.Style.Add("font-weight", "700");
36 lblRemindText.Style.Add("height", "25px");
37 separatorCell.Controls.Add(lblRemindText);
38 //Cell alignment
39 separatorCell.HorizontalAlign = HorizontalAlign.Left;
40
41 }
42
43 if (i == amountNumber)
44 {
45 Label lblAmount = new Label();
46 if (totalAmount != 0)
47 {
48 lblAmount.Text = "<div style='width:140px;text-align:right;font-weight:700;'>" + Format.FormatAmount(totalAmount) + "</div>";
49 }
50 else
51 {
52 lblAmount.Text = "";
53 }
54 lblAmount.Style.Add("height", "25px");
55 separatorCell.Controls.Add(lblAmount);
56
57 //Cell alignment
58 separatorCell.HorizontalAlign = HorizontalAlign.Right;
59 }
60
61 //The cell background color
62
63 separatorCell.BackColor = System.Drawing.Color.FromName("#ccccee");
64 //The height of the cell
65 separatorCell.ControlStyle.Height = 25;
66
67 //An increase in cell concentration of the cell control
68 rowSeparator.Cells.Add(separatorCell);
69
70 }
71 }
72
73 total = 0;
74
75 //Set the visibility of GridView row
76 rowSeparator.Visible = true;
77
78 //In the corresponding row in the GridView insert row
79 gvwTemplate.Controls[0].Controls.AddAt(subTotalRow, rowSeparator);
80
81 }
82
83 #endregion
2
3 private void InsertSubTotalRow(int subTotalRow, int amountNumber, decimal totalAmount, int remindTextIndex, string remindText)
4 {
5 GridViewRow rowSeparator = new GridViewRow(0, 0, DataControlRowType.Separator, DataControlRowState.Normal);
6 //To add a data row
7 //Set the background color of row
8 rowSeparator.BackColor = System.Drawing.Color.White;
9 //Setting the cell
10 TableCellCollection cells = gvwTemplate.Rows[0].Cells;
11
12 //Add column
13 for (int i = 0; i < gvwTemplate.Rows[0].Cells.Count; i++)
14 {
15 TableCell separatorCell = new TableCell();
16
17 //According to the first column of GridView to set the display of the cell and cross out the number
18 if (gvwTemplate.Columns[i].Visible == true)
19 {
20 separatorCell.ColumnSpan = 0;
21
22 if (i == remindTextIndex)
23 {
24 Label lblRemindText = new Label();
25
26 if (remindText == "")
27 {
28 lblRemindText.Text = "";
29 }
30 else
31 {
32 lblRemindText.Text = "<nobr>" + remindText + "</nobr>";
33 }
34
35 lblRemindText.Style.Add("font-weight", "700");
36 lblRemindText.Style.Add("height", "25px");
37 separatorCell.Controls.Add(lblRemindText);
38 //Cell alignment
39 separatorCell.HorizontalAlign = HorizontalAlign.Left;
40
41 }
42
43 if (i == amountNumber)
44 {
45 Label lblAmount = new Label();
46 if (totalAmount != 0)
47 {
48 lblAmount.Text = "<div style='width:140px;text-align:right;font-weight:700;'>" + Format.FormatAmount(totalAmount) + "</div>";
49 }
50 else
51 {
52 lblAmount.Text = "";
53 }
54 lblAmount.Style.Add("height", "25px");
55 separatorCell.Controls.Add(lblAmount);
56
57 //Cell alignment
58 separatorCell.HorizontalAlign = HorizontalAlign.Right;
59 }
60
61 //The cell background color
62
63 separatorCell.BackColor = System.Drawing.Color.FromName("#ccccee");
64 //The height of the cell
65 separatorCell.ControlStyle.Height = 25;
66
67 //An increase in cell concentration of the cell control
68 rowSeparator.Cells.Add(separatorCell);
69
70 }
71 }
72
73 total = 0;
74
75 //Set the visibility of GridView row
76 rowSeparator.Visible = true;
77
78 //In the corresponding row in the GridView insert row
79 gvwTemplate.Controls[0].Controls.AddAt(subTotalRow, rowSeparator);
80
81 }
82
83 #endregion