INDEX
データグリッドで非表示項目の値を取得する
データグリッドでは非表示項目の値は取得できない
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