我的GridView如下
它有EmptyDatatemplate和命令字段
<asp:GridView ID="AGridView" runat="server" AutoGenerateColumns="true" style="table-layout:fixed;" Width="2000px" RowStyle-HorizontalAlign="Left">
<EmptyDataTemplate>
</EmptyDataTemplate>
<asp:CommandField ShowEditButton="True" ItemStyle-Width="80px" EditText="Edit">
<ItemStyle Font-Bold="true" Font-Size="Small" />
<HeaderStyle CssClass="AAddOn" />
</asp:CommandField>
</asp:GridView>
GridView看起来像(它只有2行)
Name Age Country
A 10 NNN Edit
B 23 NNN Edit
现在我不需要在第一行显示编辑按钮。我该怎么做。
此处仅显示2行。
Name Age Country
A 10 NNN
B 23 NNN Edit
此处标题是Gridview标题单元格的数量,我的编辑位于最后一个单元格中。 (我的Gridview生成了动态生成的列,但只有2行,因此我无法获取固定列值,因此使用了标题计数)
Dim Header As Integer
For counts = 0 To AGridView.HeaderRow.Cells.Count
Header = counts
Next
Dim edit as LinkButton = DirectCast(AGridView.Rows(0).cell(header).FindControl("Edit"),LinkButton)
edit.Visible = False
上面的错误消息是对象引用未设置为instance.Index超出范围。
接下来我在AGridView_Rowdatabound里面尝试了但整个单元格正在消失。我只需要第一行编辑链接按钮可见为假
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(Header).Visible = False
End If
我在这里缺少什么。我只需要第一行编辑按钮可见为假。
答案 0 :(得分:1)
根据问题评论部分的讨论,假设您只想为第一个数据行禁用“编辑”按钮,而按钮位于第4列,我建议您尝试这样做:
将OnRowDataBound
声明添加到标记:
<asp:GridView ID="AGridView" ... OnRowDataBound="AGridView_RowDataBound">
...
</asp:GridView>
将RowDataBound
事件处理程序添加到文件后面的代码中:
Protected Sub AGridView_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowIndex = 1 Then
e.Row.Cells(3).Visible = False
End If
End Sub