选择Index Row返回null但是如果我删除 AutoGenerateColumns =" False" 属性然后它工作正常但我不能使用AutoGenerateColumns因为我想在gridview中使用文本框。
Gridiview代码
<asp:GridView ID="GridView1" runat="server" class="table table-striped table-bordered table-hover" AutoGenerateColumns="False">
<Columns>
<asp:CommandField ShowSelectButton="True" />
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<%# Eval("ID") %>
</ItemTemplate>
</asp:TemplateField >
<asp:TemplateField HeaderText="Case">
<ItemTemplate>
<%# Eval("Case") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
选择索引更改方法
Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
ID = GridView1.SelectedRow.Cells(2).Text.ToString()
End Sub
答案 0 :(得分:0)
首先,如果你想拥有不自动生成列的文本框,你应该使用TemplateColumns。
Click for the official MSDN page.
其次,要获取SelectedIndexChanged中的行,您应该选择该行。使用DataGrid中的按钮是一种很好的方法。但是您应该将其CommandName属性设置为“Select”。
答案 1 :(得分:0)
好的,我自己想出来了,为其他人添加了更新的代码
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
我添加了Label字段并使用字段Control
检索值 Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
Dim TestCase As String = DirectCast(GridView1.SelectedRow.FindControl("Label1"), Label).Text
End Sub