データグリッドで非表示項目の値を取得する・チェックボックスに値を持たせる

データグリッドで非表示項目の値を取得する

データグリッドでは非表示項目の値は取得できない

asp.netを利用しているということは、データグリッドを利用していることでしょう。
ユーザーには不要なIDなど、非表示とした項目を更新のキーとしたい場合は多いはず。

対策

通常通りグリッドへデータバインドし、グリッドのRowCreatedイベントで非表示にしましょう。
非表示項目はバインドされていないため値が取得できません。

そのため、一旦バインドした後、RowCreatedイベントで非表示にするのがポイントです。

■GridViewにOnRowCreatedを追加
    <asp:GridView ID="asp:GridView " runat="server" AutoGenerateColumns="False" 
         OnRowCreated="GridView1_RowCreated">
   ・・・・

■追加したGridView1_RowCreatedイベントを実装
    Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
      
        'コード列非表示処理
        If e.Row.RowType = DataControlRowType.DataRow OrElse e.Row.RowType = DataControlRowType.Header Then
            e.Row.Cells(0).Visible = False
        End If
        
    End Sub

チェックボックスに値を持たせたい

チェックボックスにはどうやって値を設定するのか?

もちろんTEXTに設定できるが、それだとユーザーにも表示されてしまいます。
そこでお勧めするのがAttributesを使用することです。

   Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
        
        If e.Row.RowType = DataControlRowType.DataRow Then
            
            Dim chk As CheckBox = CType(e.Row.FindControl("chckbox1"), CheckBox)
            chk.Attributes("rowindex") = e.Row.RowIndex.ToString()  行情報を設定
        End If
    End Sub

値の取得はこのようにします

   Protected Sub chk_Changed(ByVal sender As Object, ByVal e As EventArgs)
        
        TESTID = Gv1.Rows(chkbox.Attributes("rowindex")).Cells(0).Text //Attributesの行情報から非表示のIDを取得する
        
    End Sub
タイトルとURLをコピーしました