2016-03-22 3 views
0

インデックスの行を選択するとnullが返されますが、削除するとAutoGenerateColumns = "False"プロパティが正常に機能しますが、グリッドビュー内にテキストボックスが必要なのでAutoGenerateColumnsを使用できません。Gridview選択インデックスの変更Null値を返す

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

は、[OK]を私は

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 
0

まずあなたが列を自動生成することなく、テキストボックスを持っているしたい場合、あなたはTemplateColumnsを使用する必要があります。

Click for the official MSDN page.

第二に、のSelectedIndexChangedの行を取得するには、行を選択してください。 DataGridのボタンを使用するのが良い方法です。しかし、CommandNameプロパティを "Select"に設定する必要があります。

Here is an example to how to do it

+0

は、あなたが見たのフィールドコントロールを使用してラベルフィールドを追加し、値を取得している

<asp:TemplateField HeaderText="ID"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> 

他人のために更新されたコードを追加し、自分自身をそれを考え出しましたコード?私はTemplateColumnsを使用しました –

関連する問題