Gridview选择索引更改返回空值

时间:2016-03-22 10:37:30

标签: .net vb.net

选择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

2 个答案:

答案 0 :(得分:0)

首先,如果你想拥有不自动生成列的文本框,你应该使用TemplateColumns。

Click for the official MSDN page.

其次,要获取SelectedIndexChanged中的行,您应该选择该行。使用DataGrid中的按钮是一种很好的方法。但是您应该将其CommandName属性设置为“Select”。

Here is an example to how to do it

答案 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