ASP.NET GridView如何在绑定行之后动态添加行?
解决GridView绑定后在末尾添加动态行的问题
你的问题出在事件选择上——RowCreated是在每一行创建时触发的,这时候GridView的所有数据行还没完全生成,你添加的行自然会插在正在创建的行前面,导致最终出现在绑定行的最上方。
要把动态行加到所有绑定行的后面,你应该改用**DataBound事件**,这个事件会在GridView完成所有数据绑定和行创建后才触发,此时添加行就能保证它出现在末尾。
具体实现代码(VB.NET)
Protected Sub GridView1_DataBound(sender As Object, e As EventArgs) Handles GridView1.DataBound ' 创建新的GridView行,样式和数据行保持一致 Dim newRow As New GridViewRow(0, -1, DataControlRowType.DataRow, DataControlRowState.Normal) ' 为新行创建单元格,建议和GridView的列数匹配,避免布局错乱 For colIndex As Integer = 0 To GridView1.Columns.Count - 1 Dim cell As New TableCell() ' 如果需要合并所有列,设置ColumnSpan属性 If colIndex = 0 Then cell.Text = "Text" cell.ColumnSpan = GridView1.Columns.Count End If newRow.Cells.Add(cell) Next ' 获取GridView的底层Table容器 Dim gridTable As Table = DirectCast(GridView1.Controls(0), Table) ' 将新行添加到Table的行集合末尾 gridTable.Rows.Add(newRow) End Sub
额外注意事项
- 如果你的GridView启用了分页,这个动态行只会显示在当前分页的末尾,这是分页机制的正常表现;
- 代码里设置
ColumnSpan是为了让新行的单元格横跨所有列,如果你不需要合并,直接给对应列的单元格赋值即可; - 记得移除原来
RowCreated事件里的添加行代码,避免重复添加。
内容的提问来源于stack exchange,提问作者Jan Vojtěch Vaníček
相关产品推荐
相关产品推荐

