【发布时间】:2026-01-30 00:00:01
【问题描述】:
数据网格从几个 xml 文件中读取,因此我动态创建列,并添加了一个模板字段作为最后一列。
使用 RowDataBound 在模板字段中添加一个链接按钮。
Private Sub GridItem_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridItem.RowDataBound
Try
If e.Row.RowType = DataControlRowType.DataRow Then
Dim linkb As New LinkButton
linkb.Text = "Delete"
linkb.ID = "LinkDeleteItem"
linkb.OnClientClick = "javascript:DeleteItem('" & Convert.ToString(e.Row.RowIndex) & "')"
e.Row.Cells(GridItem.Columns.Count - 1).Controls.Add(linkb)
End If
Catch ex As Exception
lblMessage.Text = ex.Message
End Try
End Sub
一切正常。
但是,当我单击网格视图外的按钮以打开一个窗口以向网格添加新项目时,链接按钮消失了。但该列仍然存在。
如果我只是关闭新窗口而不保存新数据(这将提示网格重新绑定),则该列保持为空。我必须重新加载 gridview 才能显示链接按钮。
是因为链接按钮是在 rowdatabound 上创建的吗?我该如何解决这个问题?
【问题讨论】:
-
您是否尝试过仅在第一次加载页面时使用
If Not IsPostBack在Page_Load子程序中绑定网格? -
当用户选择要打开的 xml 文件时加载网格。所以当页面第一次加载时,网格是空的。
-
那么当你点击网格视图外的按钮时,是什么导致网格重新绑定呢?
-
其实我自己也不确定。当我单击按钮时,数据仍然绑定,但缺少链接按钮。
-
当按钮被点击时它没有到达那个事件,它也没有到达网格填充的子节点。
标签: asp.net gridview dynamic-controls