猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

ASP.NET

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

投稿日:

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

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

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)
        
        RentalID = Gv1.Rows(chkbox.Attributes("rowindex")).Cells(0).Text //Attributesの行情報から非表示のIDを取得する
        
    End Sub

Gooleアドセンス用336

Gooleアドセンス用336

-ASP.NET
-

執筆者:

関連記事

asp

asp.net 一連の処理ではCookieを使ってデータを連携してはいけない

1.(CL)ボタンを押す 2.(SV)クッキーにデータを書き込む処理 3.(SV)リダイレクト 4.(CL)リダイレクト先に再度リクエスト 5.(SV)クッキーを読み込む 6.(SV)クッキーが正しく …

asp

asp.net マスターぺージのLoadイベントには要注意!!

通常のマスターページのイベントは以下の順で発生します。 マスタ ページ コントロールの Init イベントが発生します。 コンテンツ コントロールの Init イベントが発生します。 マスタ ページの …